簡體   English   中英

java:查找特定節點的絕對xpath

[英]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=&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或將其重寫。 但是,對於完全通用的解決方案,您需要擔心名稱空間,對名稱空間的處理方式取決於您為什么首先要使用路徑:它是供人類讀者還是軟件使用?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM