2016-03-25 10 views
2

現在、JavaでXMLファイルを解析しようとしています。私は多くの研究を行い、DOM、SAXなどの利用可能なライブラリの多くを使用しようとしました。これらのすべては素晴らしいものであり、多くのオプションがあります。私の問題は、XMLファイル全体を解析してそこにある可能性のあるエラーを出力できるようにすることです。例えばSAXでは、ファイルを解析しますが、最初の構文エラーだけが出力されます。コンパイラのように一度にすべてのエラーを出力する方法はありますか?JavaでXMLファイルを解析し、すべてのエラーを出力します。

これができない場合は、XMLファイルを通常のテキストファイルのように解析し、すべての開始タグと終了タグを取得することを回避しようとしています。多くの条件文やルールを作成するだけでなく、これを行う簡単な方法はありますか?

ご協力いただきまして誠にありがとうございます。

おかげ

+1

*構文*エラーがある場合は、残りのファイルについては何も教えてください。 – chrylis

+0

それは私が考えたものです。 Javaのすべてのxml開閉タグを簡単につかむ方法はありますか?私は正常に解析していますが、私は大量の条件を作成しており、効率的ではないように見えます。 – BlueMoose

+0

構文エラーがある場合、終了タグが実際に終了タグであることをどのように知っていますか?文法エラーは、「終了タグ」がコメントに含まれているはずだったのかもしれないが、コメントには誤字があります。 – chrylis

答えて

-1

私はあなたがXMLパーサのようなタイプを見つける多くの成功を持っているとは思いません。定義によると、XMLパーサは、最初に見つかったエラーに対して例外をスローする必要があります。そうでない場合は、後続のテキストのノードタイプや正しさを確認する方法がありませんでしょう...

+0

悲しいことに悲しいことに、そういう感じです。論理的な観点からは理にかなっています。私は私のニーズに合うように私が取り組んでいるものを修正するだけです。私はフィードバックを感謝します。 – BlueMoose

+0

@ vtd-xml-author:これは正しくありません。詳細は私の答えを見てください。 – MRalwasser

0

だけカスタムErrorHandlerを(デフォルトErrorHandlerは最初のエラーで例外をスローするよう)を使用します。

public void validateXML(SAXSource source, Schema schema) throws SAXException, IOException 
    { 
    javax.xml.validation.Validator validator = schema.newValidator(); 
    validator.setErrorHandler(new ErrorHandler() 
    { 

     @Override 
     public void warning(SAXParseException exception) throws SAXException 
     { 
     System.err.println("Notice: " + exception.toString()); 
     } 

     @Override 
     public void fatalError(SAXParseException exception) throws SAXException 
     { 
     error(exception); 
     } 

     @Override 
     public void error(SAXParseException exception) throws SAXException 
     { 
     System.err.println("Error occured: " + exception.toString()); 
     } 
    }); 
    validator.validate(source); 
    } 
関連する問題