标准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
对象?
答案 0 :(得分:3)
NodeIterator
是DOM遍历规范的一部分。您可以检查特定Document
是否支持testing whether it is an instanceof org.w3c.dom.traversal.DocumentTraversal
遍历(JRE中的标准实现应该是)。如果是这样,你可以施展它并做
NodeIterator ni = ((DocumentTraversal)document).createNodeIterator(
document.getDocumentElement(), NodeFilter.SHOW_ALL, null, true);