2017-01-18 5 views
0

問題が発生して、stackoverflowを開くと、java saxパーサーを使用してXMLダンプがポストされます。各要素の終わりを認識しますが、startElementメソッドをスキップするようです。Sax Parser Missing opening Element

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); 

XMLは属性の数と単純に行として構成されている:

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

と上記のコードの出力は単純である:

End Element :row 
コード例を使用してIM

私は@OverrideアノテーションをdefaultHandlerのメソッドに追加しようとしましたが、startElementをオーバーライドしようとするとエラーがスローされます。誰もこの問題を解決する方法とstartElementをオーバーライドできない理由をお勧めしますか?

+1

オーバーライド時にどのエラーが発生しますか?あなたのコードで 'org.xml.sax.Attributes'と' org.xml.sax.helpers.DefaultHandler'クラスを使用していますか? – Berger

+1

私は間違いなく、間違ったライブラリがインポートされたという2番目の勧告が正しいと言いながら、実際に私は半分方法でした。それは今機能します、もしあなたが正しいとマークして、それを答えとして掲示したいのです:)ありがとう! – 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 

から、これは大丈夫に見えますが、おそらくあなたは、別のバージョンを使用しています。

関連する問題