SAX 구문 분석기는 세 가지 방법을 사용하여 xml을 구문 분석하고 읽습니다.
startElement(): SAX 구문 분석기가 여는 태그 '<'를 만날 때마다, startElement().
endElement(): at SAX 파서가 닫는 태그 '>'를 만날 때마다 startElement().
characters(): 이 메서드는 SAX 구문 분석기가 여는 태그와 닫는 태그 사이의 텍스트를 찾을 때 호출됩니다
이 세 가지 메서드는 xml을 구문 분석하는 역할을 하며, 프로그래머는 이를 사용하여 코드에서 정보를 구문 분석, 읽기 또는 추출합니다.
java
Java 코드를 테스트하려면, 콘솔에 내용을 표시하는 데 사용할 간단한 XML 파일을 만들어야합니다 .xml 버전 = "1.0"인코딩 = "UTF-8"?>java:
< 연락처 >
< 개인 ID="1"입니다>
< 이름> 인코더
< 이름> 자바
< 모바일> 054124587
< 이메일> codeurjava@gmail.com
인>
< 개인 ID="2"입니다>
< 이름> 인코더
< 이름> C++
< 모바일> 062148795
< 이메일> codeurcplusplus@gmail.com
인>
연락처>
import javax.xml.parsers.SAXParser;Execution:
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ReadFileXML{
public static void main(String argv[]) {
try {
//sax parser
SAXParserFactory spfactory = SAXParserFactory.newInstance();
//파서의 인스턴스 가져오기
SAXParser saxParser = spfactory.newSAXParser();
/*세 가지 메서드 모두 DefaltHandler에서 선언됩니다. /> corp
DefaultHandler 핸들러 = new DefaultHandler() {
부울 bnom = false;
부울 bprefirst name = false;
부울 bmobile = false;
부울 bemail = false;
/*이 메서드는 파서가
여는 태그 '<'를 만날 때마다 호출됩니다. */
public void startElement(String uri, String localName,
String qName,Attributes attributes) throws SAXException{
if (qName.equalsIgnoreCase("name")) {
bnom = true;
}
if (qName.equalsIgnoreCase("이름")) {
bfirstname = true;
}
if (qName.equalsIgnoreCase("모바일")) {
bmobile = true;
}
if (qName.equalsIgnoreCase("이메일")) {
bemail = true;
}
}
/*이 메서드는 파서가 닫는 태그 '>'를 만날 때마다 호출됩니다
닫는 태그 '' */
public void endElement(String uri, String localName,
String qName) throws SAXException {
if (qName.equalsIgnoreCase("name")) {
bnom = false;
}
if (qName.equalsIgnoreCase("이름")) {
bfirstname = false;
}
if (qName.equalsIgnoreCase("모바일")) {
bmobile = false;
}
if (qName.equalsIgnoreCase("이메일")) {
bemail = false;
}
}
/*'<'와 '>' 사이에 저장된 데이터를 출력합니다. */
public void characters(char ch[], int start,
int length)는 SAXException {
if (bnom) {
System.out.println("이름: " +
new String(ch, 시작, 길이));
bnom = 거짓;
}
if (bprename) {
System.out.println("이름: " +
new String(ch, start, length));
b첫 번째 이름 = false;
}
if (bmobile) {
System.out.println("모바일 : " +
new String(ch, start, length));
bmobile = 거짓;
}
if (bemail) {
System.out.println("Email : " +
new String(ch, start, length));
bemail = 거짓;
}
}
};
saxParser.parse("exemple.xml", 핸들러);
} catch (예외 e) {
e.printStackTrace();
}
}
}
성: coder
이름: java
모바일: 054124587
Email: codeurjava@gmail.com
성: coder
이름: c++
모바일: 062148795
이메일: codeurcplusplus@gmail.com
Commentaires (12)
Connectez-vous pour commenter
Rejoignez la discussion et partagez vos connaissances avec la communauté
Excellent tutoriel !
N'hésitez pas si vous avez des questions.