SAX 파서가 DOM 파서와 다르게 작업이며, 그것은 어느 메모리에 어떤 XML 문서를로드하거나 XML 문서의 오브젝트 표현을 만듭니다. 대신, SAX 파서 사용 콜백 함수 (
org.xml.sax.helpers.DefaultHandler
까지)는 XML 문서 구조의 클라이언트를 알려줍니다.SAX 파서는 신속하고 사용 덜 DOM 파서보다 더 메모리.
다음 SAX 콜백 메서드를 참조하십시오 :
- (startDocument) 과 endDocument () - 메서드는 XML 문서의 시작과 끝에했다.
- startElement () 및 endElement () - 문서 요소의 시작과 끝에 불리는 방법.
- 문자 () - XML 문서 요소의 시작과 끝 태그 사이에 텍스트 내용을 불리는 방법.
1. XML 파일
간단한 XML 파일을 만듭니다.
<?xml version="1.0"?> <company> <staff> <firstname>yong</firstname> <lastname>mook kim</lastname> <nickname>mkyong</nickname> <salary>100000</salary> </staff> <staff> <firstname>low</firstname> <lastname>yin fong</lastname> <nickname>fong fong</nickname> <salary>200000</salary> </staff> </company>
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; public class ReadXMLFile { public static void main(String argv[]) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); DefaultHandler handler = new DefaultHandler() { boolean bfname = false; boolean blname = false; boolean bnname = false; boolean bsalary = false; public void startElement(String uri, String localName,String qName, Attributes attributes) throws SAXException { System.out.println("Start Element :" + qName); if (qName.equalsIgnoreCase("FIRSTNAME")) { bfname = true; } if (qName.equalsIgnoreCase("LASTNAME")) { blname = true; } if (qName.equalsIgnoreCase("NICKNAME")) { bnname = true; } if (qName.equalsIgnoreCase("SALARY")) { bsalary = true; } } public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println("End Element :" + qName); } public void characters(char ch[], int start, int length) throws SAXException { if (bfname) { System.out.println("First Name : " + new String(ch, start, length)); bfname = false; } if (blname) { System.out.println("Last Name : " + new String(ch, start, length)); blname = false; } if (bnname) { System.out.println("Nick Name : " + new String(ch, start, length)); bnname = false; } if (bsalary) { System.out.println("Salary : " + new String(ch, start, length)); bsalary = false; } } }; saxParser.parse("c:\\file.xml", handler); } catch (Exception e) { e.printStackTrace(); } } }Result경고 이 예제는 것은 예외가 발생할 수 있습니다 UTF-8로 XML 파일을,에 대해이 문서를 참조하십시오 SAX로 XML 'UTF-8 "파일을 읽는 방법Start Element :company Start Element :staff Start Element :firstname First Name : yong End Element :firstname Start Element :lastname Last Name : mook kim End Element :lastname Start Element :nickname Nick Name : mkyong End Element :nickname Start Element :salary Salary : 100000 End Element :salary End Element :staff Start Element :staff Start Element :firstname First Name : low End Element :firstname Start Element :lastname Last Name : yin fong End Element :lastname Start Element :nickname Nick Name : fong fong End Element :nickname Start Element :salary Salary : 200000 End Element :salary End Element :staff End Element :company
댓글 없음:
댓글 쓰기