5

XML ドキュメントの解析に StAX を使用するのはこれが初めてです (まだ学習段階です)。XMLStreamReader を使用して XML ドキュメントを解析し、XMLStreamWriter を使用してドキュメントのコピーを生成するプロセス中に、ライターの出力でコメントとして表される次の警告に遭遇しました。

 <!-- Exception scanning External DTD Subset.  True contents of DTD cannot be determined.  Processing will continue as XMLInputFactory.IS_VALIDATING == false. -->

警告の原因はわかりましたが、黙って警告になるのではなく、エラーになるようにしたかったので、XMLInputFactory.IS_VALIDATING を true に設定しようとしました。

 XMLInputFactory factory = XMLInputFactory.newInstance();
 factory.setProperty(XMLInputFactory.IS_VALIDATING, Boolean.TRUE);

しかし、上記は私に例外を投げました:

スレッド「メイン」の例外 java.lang.IllegalArgumentException: isValidating の true 値は、com.sun.xml の com.sun.org.apache.xerces.internal.impl.PropertyManager.setProperty(PropertyManager.java:150) でサポートされていません。 internal.stream.XMLInputFactoryImpl.setProperty(XMLInputFactoryImpl.java:257) com.test.test2.helper.SgmlDocumentParser.parse(SgmlDocumentParser.java:83) com.test.test2.helper.Test.main(Test.java: 66)

では、私のアプローチの何が問題なのですか?

ありがとう!

4

1 に答える 1

5

SunのStAX実装はDTD検証をサポートしていないようです。代わりにWoodstoxを使用してみることができますが、検証をサポートしているようです。

于 2009-11-02T03:48:49.060 に答える