[英]java : finding absolute xpath of specific node
是否可以找到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="', @id, '"]')"/>
</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或將其重寫。 但是,對於完全通用的解決方案,您需要擔心名稱空間,對名稱空間的處理方式取決於您為什么首先要使用路徑:它是供人類讀者還是軟件使用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.