자바 학습:SAX 로 XML 해석 하기
자바 에 서 는 트 리 해석 기 DOM(Document Object Model,문서 대상 모델)과 스 트림 해석 기 SAX(Simple API for XML,XML 단순 API)두 가지 XML 해석 기 를 제공 합 니 다.문서 가 크 고 처리 알고리즘 이 간단 하 다 면 전체 트 리 구 조 를 보지 않 고 실행 할 때 노드 를 분석 할 수 있 을 때 DOM 처리 방식 의 효율 은 SAX 보다 못 합 니 다.
XML 문서 의 내용 은 다음 과 같 습 니 다.
파일 이름:NameList.xml,파일 경로:C:\\Users\Tsybius\\Desktop\\NameList.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<list1>
<person id="101" name="Tsybius" remark="1" />
<person id="102" name="Galatea" remark="2" />
<person id="103" name="Quintus" remark="3" />
<person id="104" name="Atia" remark="4" />
<person id="105" name="Justitia" remark="5" />
</list1>
<list2>
<person id="201" name="Zhang" remark="a" />
<person id="202" name="Wang" remark="b" />
<person id="203" name="Li" remark="c" />
<person id="204" name="Zhao" remark="d" />
<person id="205" name="Liu" remark="e" />
</list2>
<text>TEXT</text>
</root> 자바 코드 는 다음 과 같 습 니 다:
package XmlSaxTest;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
* SAX XML
* @author Tsybius2014
* @date 2015 12 3
* @time 9:46:40
* @remark
*
*/
class XmlSaxTest {
/**
* SAX XML
* @param args
*/
public static void main(String[] args) {
String filePath = "C:\\Users\\Tsybius\\Desktop\\NameList.xml";
File f = new File(filePath);
//
DefaultHandler handler = new DefaultHandler() {
//XML
public void startDocument() {
System.out.println("---------XML ---------");
}
//XML
public void endDocument() {
System.out.println("---------XML ---------");
}
//
public void startElement(String namespaceURI,
String lname, String qname, Attributes attrs) {
System.out.println(" :" + qname);
if (qname.equals("person")) {
System.out.println("id:" + attrs.getValue("id"));
System.out.println("name:" + attrs.getValue("name"));
System.out.println("remark:" + attrs.getValue("remark"));
}
}
//
public void endElement(String url, String lname, String qname) {
System.out.println(" :" + qname);
}
//
public void characters(char[] ch, int start, int length) {
String s = new String(ch, start, length);
if (!s.isEmpty() && s.trim().length() > 0) {
System.out.println(" :" + s);
}
}
};
// SAX XML
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
try {
SAXParser saxParser = factory.newSAXParser();
saxParser.parse(f, handler);
} catch (ParserConfigurationException | SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("END");
}
} 콘 솔 에서 출력 결 과 는 다음 과 같 습 니 다.
---------XML ---------
:root
:list1
:person
id:101
name:Tsybius
remark:1
:person
:person
id:102
name:Galatea
remark:2
:person
:person
id:103
name:Quintus
remark:3
:person
:person
id:104
name:Atia
remark:4
:person
:person
id:105
name:Justitia
remark:5
:person
:list1
:list2
:person
id:201
name:Zhang
remark:a
:person
:person
id:202
name:Wang
remark:b
:person
:person
id:203
name:Li
remark:c
:person
:person
id:204
name:Zhao
remark:d
:person
:person
id:205
name:Liu
remark:e
:person
:list2
:text
:TEXT
:text
:root
---------XML ---------
END END
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.