2017-01-18 1 views
0

Im는 stackoverflow를 여는 데 문제가있어서 java sax 파서를 사용하여 XML 덤프를 게시합니다. 그것은 각 요소의 끝을 인식하지만 startElement 메소드를 건너 뛴 것처럼 보입니다. XML이 속성의 수와 연속 단순히 구성된다Sax Parser 누락 된 요소 열기

try { 

      SAXParserFactory factory = SAXParserFactory.newInstance(); 
      SAXParser saxParser = factory.newSAXParser(); 

      DefaultHandler handler = new DefaultHandler() { 

       public void startElement(String uri, String localName, String qName, 
         Attributes attributes) throws SAXException { 

        System.out.println("Start Element :" + qName); 

       } 

       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 { 

       } 

      }; 

      saxParser.parse(filename, handler); 

: 임 예 코드 사용

<row Id="29621" "postTypeID=1" AcceptedAnswer...> 

위의 코드로부터의 출력은 간단히이다

End Element :row 

나는 @Override 어노테이션을 defaultHandler 내부의 메소드에 추가하려고 시도했지만, startElement를 오버라이드하려고하면 에러가 발생한다. 누구든지이 문제를 해결하는 방법과 startElement를 재정의 할 수없는 이유를 제안 할 수 있습니까?

+1

재정의 할 때 어떤 오류가 발생합니까? 그리고 당신의 코드에서'org.xml.sax.Attributes'와'org.xml.sax.helpers.DefaultHandler' 클래스를 사용하고 있습니까? – Berger

+1

사실 내가 실제로 오류가 없다는 언급을 통해 절반 방법이었고 잘못된 제안이 올바르다는 두 번째 권고가 수입되었습니다. 그것은 지금 기능, 만약 당신이 대답을 잘못으로 표시하려면 그것을 게시하려면 :) 감사합니다 순전히! – D3181

+1

오타 답게 답을 게시하는 것이 다른 사람에게는 도움이되지 않지만 문제가 해결되어 기쁩니다. – Berger

답변

1

Override 주석을 추가 할 때 오류가 발생하는 경우 가장 가능성있는 설명은 메소드의 서명이 재정의하려는 메소드 중 하나와 일치하지 않는다는 것입니다. Java 8 JavaDocs of the SAX DefaultParser:

public void startElement(String uri, 
        String localName, 
        String qName, 
        Attributes attributes) 
       throws SAXException 

에서

이 좋아 보이지만, 아마도 당신은 다른 버전을 사용하고 있습니다.