在處理Xpath表達式時,我堅持一種情況,在這種情況下,我必須找出依賴於其他節點的一個元素的節點。如何使用XPath從XML中檢索遞歸元素
下面是使用的XML示例:
<?xml version="1.0" encoding="UTF-8" ?>
<parent1>
<child1 id="1">
<in>Starting1</in>
<out>connect1</out>
</child1>
<child1 id="2">
<in>connect1</in>
<out>connect1.1</out>
</child1>
<child1 id="3">
<in>Starting2</in>
<out>connect2</out>
</child1>
<child1 id="4">
<in>connect1.1</in>
<out>connect1.2</out>
</child1>
<child1 id="5">
<in>connect1.2</in>
<out>end1</out>
</child1>
<child1 id="6">
<in>connect2</in>
<out>connect2.1</out>
</child1>
<child1 id="7">
<in>connect2.1</in>
<out>connect2.2</out>
</child1>
<child1 id="8">
<in>connect2.2</in>
<out>open2</out>
</child1>
</parent1>
希望的輸出是找出節點,其具有開始點作爲「啓動」,然後行進到另一個節點(裝置出來的節點是在對於其他節點)&不以「結束」結尾。
開始和結束之間可能有x個連接。
我已經使用了下面的xpath表達式。但是這僅限於2級遞歸。
//parent1/child1[in=(//parent1/child1[in=(//parent1/child1[in=(//parent1/child1[contains(in,"Starting")]/out)]/out)]/out) and not(contains(out,"end"))]
輸出:
<child1 id="8">
<in>connect2.2</in>
<out>open2</out>
</child1>
至於,我不知道如何連接器的數量很多可能是在節點之間。那麼,XML1.0中有沒有辦法找到遞歸?
有一個duplicate question already in stackoverflow.但是,我沒有從那裏得到解決方案。
你的問題很難理解。輸入中沒有「開始」點,只有「開始1」和「開始2」。並且可能有多個節點符合標準。請用更清晰的語言說明您的要求。 –
包含(in,「開始」)標記表示,標記文本包含「開始」字符串。你可以檢查xpath表達式 –