我有具有特定名称的元素的NodeList,我想拥有所有theese节点的XPath。
我找不到方法。
NodeList nList = doc.getElementsByTagName("definition"); for (int i = 0; i < nList.getLength(); i++) { Node node = nList.item(i); System.out.println(node.GET_XPATH()); }
我正在寻找类似GET_XPATH()的方法
有人知道该怎么做吗?甚至有可能吗?
如果可能,XSLT也可以使用它,但是如果有人知道Java中的这种可能性,则最好使用它。
原因:我需要一组指向XML库的指针。指向定义元素的指针。
输入示例:
<odML> <section> <type>experiment</type> <name>Experiment</name> <definition></definition> <property> <definition></definition> </property> <property> <definition></definition> <value> <definition></definition> </value> </property> </section> <definition></definition> </odML>
输出:
/odML/section/definition /odML/section/property[1]/definition /odML/section/property[2]/definition /odML/section/property[2]/value/definition /odML/definition
以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" encoding="UTF-8"/> <xsl:strip-space elements="*"/> <xsl:template match="/"> <xsl:for-each select="//definition"> <xsl:for-each select="ancestor::*"> <xsl:text>/</xsl:text> <xsl:value-of select="name()"/> <xsl:if test="(preceding-sibling::*|following-sibling::*)[name()=name(current())]"> <xsl:text>[</xsl:text> <xsl:value-of select="count(preceding-sibling::*[name()=name(current())]) + 1"/> <xsl:text>]</xsl:text> </xsl:if> </xsl:for-each> <xsl:text>/definition</xsl:text> <xsl:if test="position()!=last()"> <xsl:text> </xsl:text> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>
当应用于示例输入时,将返回: