gpt4 book ai didi

java : finding absolute xpath of specific node

转载 作者:行者123 更新时间:2023-12-01 13:33:24 27 4
gpt4 key购买 nike

是否可以找到 XML 或 XHTML 文件的任何特定节点的 xpath?

对于(例如)

    <html>
<body>
<div id="a">
<div>
</div>
<div class"b">
<div>
//I want xpath of below line only
<a id="c">Here </a>
</div>
</div>
</div>
</body>
</html>

如上所示,如果我想要<a id="c">Here </a>的xpath仅行。答案应该是这样的:- /html/body/div/div[2]/a[@id="c"]是否可以?如果是的话,可以提供一下代码吗?

最佳答案

在 XPath 3.0 中,有一个函数 path() ,它大致可以完成您想要的操作,尽管不精确(处理器如何知道您想要谓词[@id="c"] 包括在内?)

在 XSLT 中做这样的事情很容易:

<xsl:template match="*[@id]" mode="path">
<xsl:next-match/>
<xsl:value-of select="concat('[@id=&quot;', @id, '&quot;]')"/>
</xsl:template>

<xsl:template match="*[last()!=1]" mode="path">
<xsl:next-match/>
<xsl:text>[</xsl:text>
<xsl:number/>
<xsl:text>]</xsl:text>
</xsl:template>

<xsl:template match="*" mode="path">
<xsl:apply-templates select="parent::*" mode="path"/>
<xsl:text>/</xsl:text>
<xsl:value-of select="name()"/>
</xsl:template>

如果您确实必须在 Java 中执行此操作,则可以从 Java 调用上述 XSLT 或重写它。不过,对于完全通用的解决方案,您需要担心命名空间,而您对命名空间的处理取决于您首先想要路径的原因:它是供人类读者还是软件使用的?

关于java : finding absolute xpath of specific node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21428734/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com