1

Apache Xerces文書の構文解析および反復クラスの、標準Java( J2SE) 6 (なしJDOMまたは他のサード・パーティー・ライブラリー)の直接の代替物はありますか? 実装を使用する、つまり、 XML DOMSun J2SE XML

com.sun.org.apache.xerces.internal.dom.DocumentImpl
com.sun.org.apache.xerces.internal.dom.NodeIteratorImpl
com.sun.org.apache.xerces.internal.parsers.DOMParser

これらのクラスを使用するたびに「Sun 独自の API であり、将来のリリースで削除される可能性があります」という警告がコンパイラによって引き起こされます。

汎用NodeIteratorオブジェクトをインスタンス化するために現在使用しているコードは

org.w3c.dom.Document document = ...; // Get an XML DOM Document object

org.w3c.dom.NodeIterator iterator = new NodeIteratorImpl(new DocumentImpl(
    document.getDoctype()), document.getDocumentElement(),
    NodeFilter.SHOW_ALL, null, true);

は深さ優先の検索順序でドキュメントNodeIteratorのノードにアクセスしXML DOMます。これは私のアプリケーションにとって不可欠であるため、上記のコードを機能的に同等のものに置き換える必要があります。

また、新しいorg.w3c.dom.Documentオブジェクトを作成する最良の (= 標準的で最速の) 方法は次のようなものでしょうか?

Document = DocumentBuilderFactory.newInstance().newDocumentBuilder.parse(source)

source適切にインスタンス化されたorg.xml.sax.InputSourceオブジェクトはどこにありますか?

4

1 に答える 1

3

これNodeIteratorは DOM トラバーサル仕様の一部です。特定のインスタンスがDocumentトラバーサルをサポートしているかどうかは、それが instanceof であるかどうかをテストするorg.w3c.dom.traversal.DocumentTraversalことで確認できます(JRE の標準実装はそうである必要があります)。もしそうなら、あなたはそれをキャストして行うことができます

NodeIterator ni = ((DocumentTraversal)document).createNodeIterator(
      document.getDocumentElement(), NodeFilter.SHOW_ALL, null, true);
于 2012-09-26T22:01:27.127 に答える