我正在使用Java 1.6。给定一个org.w3c.dom.Node
对象,如何获取该节点在XML文档中的位置的String XPath表达式?不能假定此节点或其任何祖先/后代具有id
属性。
最佳答案
我不认为通过DOM有任何简单的方法。问题在于,没有一种规范的方法可以识别给定的节点。
话虽如此,您可能会发现diffxml中的getXPath函数很有用:http://diffxml.cvs.sourceforge.net/viewvc/diffxml/diffxml/src/java/org/diffxml/diffxml/fmes/NodeOps.java?view=markup
它将返回格式为/ node()[4] / node()[2]等的XPath。
更新:由于diffxml是GPL许可的,并且getXPath需要一些提取,因此我以Apache许可在github:https://github.com/amouat/XPathGen上以XPathGen的形式发布了它。