2010-04-27 2 views
0

SAX 파서를 처음 사용하는 사람이 없으니 까 누구나 실행 방법을 말해 줄 수 있습니다. (jdk)를 실행하는 데 필요한 것은 무엇입니까? android xml과 normal을 모두 파싱 할 수있는 색소폰 파서를 사용할 수 있습니까? xmlSax 파서를 실행 중

답변

0

SAX 파서는 XML 문서를 구문 분석하는 동안 발생하는 이벤트에 해당하는 특정 콜백 함수를 구현하는 ContentHandler 개체를 생성하여 구현됩니다. 예를 들어, 파서가 문서의 파싱을 시작할 때 startDocument 메서드가 호출되고 새 태그를 발견하면 startElement이 호출됩니다. 마찬가지로 파서가 태그 나 문서의 끝을 찾거나 유효하지 않은 시퀀스가 ​​발견되면 endElement, endDocumenterror이 호출됩니다.

This example은 SAX 파서를 사용하는 방법을 보여줍니다. 중요한 점은 MyHandler 클래스가 인터페이스를 구현하는 DefaultHandler 클래스를 확장하고 각 콜백 메소드의 빈 구현을 재정의한다는 것입니다.

Java SAXParser 클래스는 XML 문서를 구문 분석하는 방법을 알고 있지만 관심 대상을 발견하면 처리기 클래스를 사용하여 처리 할 방법을 알아야합니다. DefaultHandler 클래스는 재미있는 것에 집중할 수 있도록 확장 할 수있는 도우미 구현입니다.

+0

THANKS maerics는 로컬 XML 파일을 구문 분석하는 방법을 알려줄 수 있습니다. 그렇다면 defaulthandler 클래스는 필요하지 않습니다. – apoorva

0

원하는 경우 DefaultHandler를 확장하는 대신 ContentHandler를 직접 사용할 수 있습니다 (아래 참조). 이 수준의 SAX 파싱은 Android 플랫폼에서 사용할 수 있다고 생각합니다.

import javax.xml.parsers.SAXParser; 
import javax.xml.parsers.SAXParserFactory; 

import org.xml.sax.XMLReader; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     SAXParserFactory spf = SAXParserFactory.newInstance(); 
     SAXParser sp = spf.newSAXParser(); 
     XMLReader xr = sp.getXMLReader(); 
     xr.setContentHandler(new MyContentHandler()); 
     xr.parse("input.xml"); 
    } 

    private static class MyContentHandler implements ContentHandler { 

     public void setDocumentLocator(Locator locator) { 
     } 

     public void startDocument() throws SAXException { 
     } 

     public void endDocument() throws SAXException { 
     } 

     public void startPrefixMapping(String prefix, String uri) 
       throws SAXException { 
     } 

     public void endPrefixMapping(String prefix) throws SAXException { 
     } 

     public void startElement(String uri, String localName, String qName, 
      System.out.println("START " + qName); 
     } 

     public void endElement(String uri, String localName, String qName) 
       throws SAXException { 
      System.out.println("END " + qName); 
     } 

     public void characters(char[] ch, int start, int length) 
       throws SAXException { 
      System.out.println(new String(ch, start, length)); 
     } 

     public void ignorableWhitespace(char[] ch, int start, int length) 
       throws SAXException { 
     } 

     public void processingInstruction(String target, String data) 
       throws SAXException { 
     } 

     public void skippedEntity(String name) throws SAXException { 
     } 

    } 

}