内部スキーマに対して XML ファイルを検証する方法を探しています。現在、これは私のコードです。
final SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);
SAXParser parser;
parser = factory.newSAXParser();
parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage",
"http://www.w3.org/2001/XMLSchema");
final XMLReader reader = parser.getXMLReader();
reader.setErrorHandler(new SAXErrorHandler());
reader.parse(new InputSource(doc));
致命的ではないエラーであり、解析を続行できる場合は、検証エラーを警告として報告します。中断して例外をスローする場合よりも多くのエラーを確認できるため、これは素晴らしいことです。
ただし、コードで情報を利用できるようにすることはできないため、メソッドboolean validate()
でエラーの有無を返すことができます (警告)
そこで、解析が完了した後に取得できるプロパティを持つ ErrorHandler の独自のインスタンスについて考えましたが、それは私にはクールではないように思えます:)
次のことは、このような解析には時間がかかり、バリデーターを使用するだけで大幅に高速になる可能性があることを解析することです (そして、ここでは時間が重要です;))。解析します。