1

Java标准( J2SE) 6(没有JDOM或其他第三方库)中是否有Apache Xerces XML DOM文档解析和迭代类的直接替代品?使用Sun 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 遍历规范的一部分。您可以通过测试它是否为instanceof来检查特定是否Document支持遍历(JRE中的标准实现应该是)。如果是这样,你可以施放它并做org.w3c.dom.traversal.DocumentTraversal

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