5
SAXParserまたはXMLReaderを使用してxmlファイルを解析し、特定のxsd ファイル(new File("example.xsd")
)に準拠していることを確認します。サックスパーサーでxsdファイルを解析する際にxsdファイルを検証する方法は?
それは簡単です
- にthis SO answerで
Validator
等を用いて、余分なステップでXSDファイルに対して検証を行います。 xsdの名前を
"http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation"
のように指定して解析すると、this SO answerのように検証することができます。
しかしを解析中に、私はnew File("example.xsd")
に対して検証することができますか?
SchemaFactory schemaFactory = SchemaFactory
.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new File("myschema.xsd"));
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
saxFactory.setSchema(schema);
SAXParser parser = saxFactory.newSAXParser();
parser.parse("data.xml", new DefaultHandler() {
// TODO: other handler methods
@Override
public void error(SAXParseException e) throws SAXException {
throw e;
}
});
あなたのハンドラにerror methodをオーバーライドし、あなたが合うように作用することにより、検証エラーを処理:SAXParserFactoryにスキーマを設定し、上記のJava 5またはを想定し
パーサーは 'schemaFactory(newSchema(...)) 'で設定したものではなく、xmlファイル内で定義されたスキーマを使用しているようです。 – tangens
これは私が見る動作ではありません(パーザは、ドキュメントに設定されている場合でも、常に工場で設定されたスキーマに対して検証します)。サンプル文書/コードがなければ、問題を特定することは困難です。 – McDowell