XML 학습 여행 1 - XML 해상도 기
XML 은 자바 에서 점점 광범 위 하 게 사용 되 고 있 으 며, 몇 가지 자주 사용 하 는 XML 해석 기 를 파악 하 는 것 이 필요 하 다.현재 XML 의 주요 해 기 는 DOM, SAX, JDOM 입 니 다. DOM 은 합 법 적 인 Well - Formed 파일 을 위 한 API 응용 프로그램 인터페이스 로 이 파일 들 의 논리 적 구조, 접근 과 조작 방법 을 정의 합 니 다. W3C 가 제정 한 목 표 는 각종 프로그램 언어, 운영 체제 와 응용 프로그램 에 통용 되 는 API 를 제공 하 는 것 입 니 다. DOM 은 매우 높 은 호환성 을 가지 고 있 습 니 다. SAX (Simple Application interface for XML) 는 이벤트 XML 해상도 기 를 기반 으로 무료 로 얻 을 수 있 는 플랫폼 언어 와 무관 한 API 로 프로그램 과 스 크 립 트 의 동적 접근 과 문서 의 내용, 구조 와 스타일 을 업데이트 할 수 있 습 니 다. JDOM 은 두 명의 유명한 자바 개발 자 겸 작가, Brett Mclaughlin 과 Jason Hunter 의 창작 성과 로 트 리 구 조 를 바탕 으로 순수한 자바 기술 로 XML 파일 에 대한 분석, 생 성, 직렬 화 및 기타 많은 조작 을 실현 하 는 오픈 소스 프로젝트 입 니 다. JDOM 은 자바 프로 그래 밍 서 비 스 를 직접 제공 하고 강력 한 자바 언어의 여러 가지 특성 을 이용 합 니 다.SAX 와 DOM 의 기능 을 효과적으로 결합 시 켜 사용 디자인 에 있어 서 가능 한 한 원래 사용 과정 에서 의 복잡성 을 숨 깁 니 다. DOM 과 SAX 는 API 에서 직접 찾 을 수 있 습 니 다. 그 중에서 세 개의 패 키 지 를 포함 합 니 다.
·org. w3c. dom, W3C 가 XML 표준 기획 문서 대상 모델 에 추천 하 는 자바 도구 ·org. xml. sax, XML 을 문법 분석 하 는 이벤트 구동 에 사용 되 는 간단 한 API ·javax. xml. parsers, 공장 화 도구, 응용 프로그램 개발 자 들 이 특수 한 문법 분석 기 도 구 를 얻 고 설정 할 수 있 도록 합 니 다. JDOM 은 교체 할 수 있 습 니 다. JDom 은 오픈 소스 프로젝트 로 사용 할 때 jdom. jar 를 라 이브 러 리 에 가 져 와 야 합 니 다.API 의 해석 기 를 직접 사용 하 는 것 보다 JDOM 은 사용 하기 가 훨씬 간단 합 니 다.JDom 은 2000 년 봄 Brett McLaughlin 과 Jason Hunter 에 의 해 개발 되 어 DOM 과 SAX 가 실제 응용 에서 의 부족 한 점 을 보완 했다.다음은 우 리 는 하나의 실제 예 를 통 해 각각 두 가지 방식 으로 xml 를 해석 하 는 시험 문제 파일 을 통 해 이들 의 차 이 를 비교 합 니 다. 이번에 분석 해 야 할 XML 파일 Item. xml
-
C 1 다음 메모리 에서 접근 속도 가 가장 빠 른 것 은: A) 하드디스크 메모리 B) 플 로 피 디스크 메모리 C) 반도체 RAM (메모리 저장 장치) D) 테이프 메모리 기본 문제 -
D 1 다음은 마이크로컴퓨터 조작 에 관 한 네 가지 서술 입 니 다. 그 중에서 정확 한 하 나 는 입 니 다. A) 시스템 은 입력 날짜 로 아무것도 하지 않 으 며, 지난 날 짜 를 당일 날짜 로 마음대로 입력 할 수 있다 B) 사용자 가 한 문 자 를 입력 할 때마다 DOS 는 즉시 그것 을 읽 고 식별한다 C) DOS 시스템 을 시작 할 때 새 시간 을 입력 하지 않 으 려 면 사용자 가 임의의 버튼 만 누 르 면 된다. D) 플 로 피 디스크 는 전원 을 끊 기 전에 꺼 낼 수도 있 고, 전원 을 끊 은 후에 꺼 낼 수도 있다 기본 문제
package action;
/**
*
* @author weiqishaonian
*/
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
// org.xml.sax
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DomExample {
private Document doc;
private InputStream is = null;
public DomExample(String xmlFilePath) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();//(1) DOM
DocumentBuilder db = dbf.newDocumentBuilder();//(2) DOM DOM
is = new FileInputStream(xmlFilePath);//(3) XML , DOM
doc = db.parse(is);//(4) XML , Document
Element emt = doc.getDocumentElement();//(5) XML
NodeList list = emt.getChildNodes();//(6)
if (list != null) {
for (int i = 0; i < list.getLength(); i++) {
Node item = list.item(i);
if (item.getNodeType() == Node.ELEMENT_NODE) {
//(7)
String id = item.getAttributes().getNamedItem("id").getNodeValue();
System.out.println(id);
//(8)
for (Node node = item.getFirstChild(); node != null; node = node.getNextSibling()) {
if (node.getNodeType() == Node.ELEMENT_NODE) {
if (node.getNodeName().equals("answer")) {
String answer = node.getFirstChild().getNodeValue();//
System.out.println(answer);
}
if (node.getNodeName().equals("level")) {
String level = node.getFirstChild().getNodeValue();//
System.out.println(level);
}
if (node.getNodeName().equals("question")) {
String question = node.getFirstChild().getNodeValue();//
System.out.println(question);
}
if (node.getNodeName().equals("questionType")) {
String questionType = node.getFirstChild().getNodeValue();//
System.out.println(questionType);
}
}
}
}
}
}
is.close();
} catch (SAXException ex) {
Logger.getLogger(ItemXMLParser.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ItemXMLParser.class.getName()).log(Level.SEVERE, null, ex);
} catch (ParserConfigurationException ex) {
Logger.getLogger(ItemXMLParser.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String[] args) {
System.out.println("===========================================");
new DomExample("D:/item.xml");
System.out.println("===========================================");
}
}
실행 결과: run - single: = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = A) 하드디스크 메모리 B) 플 로 피 디스크 메모리 C) 반도체 RAM (메모리 저장 장치) D) 테이프 메모리 기본 문제 2D 1 다음은 마이크로컴퓨터 조작 에 관 한 네 가지 서술 입 니 다. 그 중에서 정확 한 하 나 는 입 니 다. A) 시스템 은 입력 날짜 로 아무것도 하지 않 으 며, 지난 날 짜 를 당일 날짜 로 마음대로 입력 할 수 있다 B) 사용자 가 한 문 자 를 입력 할 때마다 DOS 는 즉시 그것 을 읽 고 식별한다 C) DOS 시스템 을 시작 할 때 새 시간 을 입력 하지 않 으 려 면 사용자 가 임의의 버튼 만 누 르 면 된다. D) 플 로 피 디스크 는 전원 을 끊 기 전에 꺼 낼 수도 있 고 전원 을 끊 은 후에 기본 문 제 를 꺼 낼 수도 있다 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = BUILD SUCCESSFUL (totalk time: 0 seconds) 은 JDOM 을 사용 하여 Item. xml 를 해석 한 적 이 있다. JDomExample. 자바
package action;
/**
*
* @author weiqishaonian
*/
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class JDomExample {
public JDomExample(String xmlFilePath) {
try {
SAXBuilder sb = new SAXBuilder();//
Document doc = sb.build(new FileInputStream(xmlFilePath));
Element root = doc.getRootElement(); //
List items = root.getChildren(); //
for (int i = 0; i < items.size(); i++) {
Element item = (Element) items.get(i); // i item
System.out.println(item.getAttribute("id").toString());
Element answer = item.getChild("answer"); //
System.out.println(answer.getText());
Element level = item.getChild("level"); //
System.out.println(level.getText());
Element question = item.getChild("question"); //
System.out.println(question.getText());
Element questionType = item.getChild("questionType"); //
System.out.println(questionType.getText());
}
} catch (JDOMException ex) {
Logger.getLogger(JDomExample.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(JDomExample.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String[] args) {
System.out.println("===========================================");
new JDomExample("D:/item.xml");
System.out.println("===========================================");
}
}
실행 결과: run - single: = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = A) 하드디스크 메모리 B) 플 로 피 디스크 메모리 C) 반도체 RAM (메모리 저장 장치) D) 테이프 메모리 기본 문제 [Attribute: id = "2"] D1 다음은 마이크로컴퓨터 조작 에 관 한 네 가지 서술 입 니 다. 그 중에서 정확 한 하 나 는: 입 니 다. A) 시스템 은 입력 날짜 로 아무것도 하지 않 으 며, 지난 날 짜 를 당일 날짜 로 마음대로 입력 할 수 있다 B) 사용자 가 한 문 자 를 입력 할 때마다 DOS 는 즉시 그것 을 읽 고 식별한다 C) DOS 시스템 을 시작 할 때 새 시간 을 입력 하지 않 으 려 면 사용자 가 임의의 버튼 만 누 르 면 된다. D) 플 로 피 디스크 는 전원 을 끊 기 전에 꺼 낼 수도 있 고 전원 을 끊 은 후에 기본 문 제 를 꺼 낼 수도 있다 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = BUILD SUCCESSFUL (totalk time: 0 seconds) 위의 두 문 서 를 비교 해 보면 우 리 는 차 이 를 뚜렷하게 볼 수 있다.JDOM 해석 은 DOM 과 SAX 를 사용 하여 해석 하 는 것 보다 더 간단 하 며, 같은 기능 을 완성 하려 면 DOM 과 SAX 를 사용 하 는 것 보다 코드 가 적 고 (DomExample. java 와 JDomExample. java 파일 을 보십시오) JDOM 코드 를 사용 하 는 것 이 더욱 뚜렷 해 보 입 니 다.JDom 은 JAVA 를 위해 직접 프로 그래 밍 서 비 스 를 제공 합 니 다.그것 은 더욱 강력 한 JAVA 언어의 여러 가지 특성 (방법 과부하, 집합 개념 과 맵) 을 이용 하여 SAX 와 DOM 의 기능 을 효과적으로 결합 시 켰 다.Jdom 은 자바 언어 로 XML 을 읽 고 쓰 고 조작 하 는 새로운 API 함수 다.Jason Hunter 와 Brett McLaughlin 은 1.0 버 전 을 공개 적 으로 발표 했다.직관 적 이 고 간단 하 며 효율 적 인 전제 에서 이러한 API 함 수 는 최대한 최적화 되 었 다.다음 지면 에 서 는 이미 존재 하 는 XML 문 서 를 Jdom 으로 읽 는 방법 을 소개 한다.사용 디자인 에 있어 서 XML 을 사용 하 는 과정 에서 의 복잡성 을 가능 한 한 숨 깁 니 다.JDOM 을 이용 하여 XML 문 서 를 처리 하 는 것 은 쉽 고 간단 한 일이 될 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.