4
我正在使用非常通用的XML結構,其中一切都是一個項目(無論如何,這個問題都與這個問題有關)。如何找到具有特定屬性的元素的子元素的祖先或自我?
基於知道我當前正在使用的item元素和作爲正在查找的節點的父節點的item元素,我需要找到一個項目。我有一個工作xpath,但它是相當資源密集型的,我正在尋找更優雅和更便宜的東西。
上述項目鍵=一個節點就是我要找的(雖然這不是真正的文檔根目錄的孩子)
XML元素的父:
<root>
<item key="a">
<item key="b">
<item key="c">
<item key="d"/>
</item>
</item>
<item key="e">
<item key="f">
<item key="g"/>
</item>
</item>
</item>
</root>
實際的XML是更深和更多的分支。例如,如果我在key = g,e或f的項目上,我需要返回key = e的項目。如果我使用的鍵是b,c或d,我需要使用key = b返回項目。
我正在使用這個xpath,它正在工作,但是往上走,然後退回祖先 - 後裔軸似乎比我需要的行程長得多。
current()
/ancestor-or-self::item[@key='a']
/item[descendant-or-self::* = current()]
是否有這樣做的一個簡單的方法,牢記我只知道1)我在節點和2)我要尋找的節點的父節點的關鍵屬性?
只是爲了細節:XML是Sitecore生成的,我實際上沒有使用current()函數,我使用sc_currentitem參數來設置我需要開始處理的起始節點。
在此先感謝。
看起來很簡單,已經(在我的眼睛)。我見過很多可怕的XPath。 – jwueller 2010-12-02 23:54:53
這不是複雜性,而是它處理XML的深度,這很可怕。我正在尋找的節點的父節點可能有大量的子節點/子節點,我真的不想每個分支都停下來。 – 2010-12-03 00:14:06