2010-07-20 3 views
0

아마도 이것은 n00b 질문입니다.Sax 파서 : processingInstruction()이 호출되지 않았습니다

은 그 같은 XML 파일을 구문 분석하려고 :

<?xml version="1.0" encoding="UTF-8" ?> 
<test> 
    <a></a> 
</test> 

를 다음 코드 :

public static void parse(File f) { 
    final DefaultHandler handler = new DefaultHandler() { 
     @Override 
     public void processingInstruction(String target, String data) throws SAXException { 
      System.out.println("Processing Instruction"); 
     } 
    }; 
    SAXParserFactory.newInstance().newSAXParser().parse(f, handler); 
} 

I 출력 "Processing Instruction"이 표준 출력에 인쇄 될 것으로 기대합니다. 그러나 이것은 일어나지 않습니다. 왜 누군가 말해 줄 수 있니? 의 JavaDoc에서

답변

1

:

SAX 파서는 XML 선언 (XML 1.0, 2.8 절) 또는이 방법을 사용하여 텍스트 선언 (XML 1.0, 섹션 4.3.1)을보고해서는 안됩니다.

제가 알고 있듯이 <?xml version="1.0" encoding="UTF-8" ?> 행은이 방법으로보고/캐치되지 않습니다. xml 코드에 다른 처리 명령어를 추가하고 파서에 다시 공급하십시오.

+0

답변 해 주셔서 감사합니다. 또 다른 질문 : 파일에 유효한 XML 선언이 있는지 알아낼 수 있습니까? – Martin

+0

@Martin : 선언이 유효하지 않은 경우 예외를 throw합니다. –

+0

즉, xml 선언은 처리 명령어가 아니므로 파서에서 하나로서보고해서는 안됩니다. –

관련 문제