3

次の Java メソッドがあります。

private static Document documentFromFile(final File xmlFile)
{
    Document document = null;
    try
    {
        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
            .newInstance();
        DocumentBuilder docBuilder = docBuilderFactory
            .newDocumentBuilder();
        document = docBuilder.parse(xmlFile);
        document.getDocumentElement().normalize();
    }
    catch(Exception exc)
    {
        // Handle exception...
    }

    return document;
}

テスト メソッドで、このメソッドに不正な形式の XML ファイルを渡すと、コンソールにあらゆる種類のエラー出力が表示されます。

[致命的なエラー] :1:1: プロローグではコンテンツを使用できません。

[致命的なエラー] :1:1: ファイルの終わりが早すぎます。

犯人は だと思いdocBuilder.parse(xmlFile)ます。このデフォルトの出力を無効にして、ドキュメント ビルダを「沈黙」させたいのですが、このオブジェクトには、そのようなことを可能にするセッター メソッドがありません。ここに救済策がありますか、それともこれで立ち往生していますか?

4

1 に答える 1

3

DocumentBuilder.setErrorHandlerを使用して、の実装を設定しますErrorHandler。パッケージ名と混同しないでください。「org.xml.sax」と表示されていても、必要なものです。Javadocはエラーと警告を無視すると言っているので、DefaultHandlerを使用できると思います。それでも冗長すぎる場合は、独自の実装を提供できます。

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
db.setErrorHandler(new DefaultHandler());
于 2012-06-05T01:53:40.340 に答える