2

重複の可能性:
XSD に対する XML の検証

このコードを使用して、XML を XSD で検証しています

        DocumentBuilder parser = factory.newDocumentBuilder();

        // Parse the file. If errors found, they will be printed.
        parser.parse(args[1]);

しかし、どのように機能するのか知りたいのですが、タグまたはすべてのデータをチェックしますか? 信頼性は?

4

1 に答える 1

1

ドキュメントがパーサーになった後、結果の DOM が XML スキーマに対して検証される次のようなことを行うことができます。のインスタンスを設定ErrorHandlerして、検証エラーの処理方法を選択できます。

public class Demo {

    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        DocumentBuilder parser = factory.newDocumentBuilder();
        Document document = parser.parse(args[1]);
        DOMSouce source = new DOMSource(document);

        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        Schema schema = sf.newSchema(new File("customer.xsd"));

        Validator validator = schema.newValidator();
        validator.setErrorHandler(new MyErrorHandler());
        validator.validate(source);
    }

}

または、解析中に検証が行われるように をsetSchema呼び出すこともできますが、これはすべての DOM パーサーでサポートされているわけではありません。DocumentBuilderFactory

詳細については

以下は、このスキーマ検証アプローチが使用されているブログの例へのリンクです。この例では、a のJAXBSource代わりに aDOMSourceが使用されていますが、それ以外はすべて同じです。

于 2012-12-21T11:32:30.727 に答える