給出的樣本XML數據:的XPath:串聯同級節點文本
<root>
<a>
<id>1</id>
<status>on</status>
<level>4</level>
<otherData>asdfasdfsdfvasdF</otherData>
<b>
<name>A1</name>
</b>
</a>
<a>
<id>2</id>
<status>on</status>
<level>8</level>
<otherData>asdfasdfsdfvasdF</otherData>
<b>
<name>TEST</name>
</b>
</a>
<a>
<id>3</id>
<status>off</status>
<level>2</level>
<otherData>asdfasdfsdfvasdF</otherData>
<b>
<name>A1</name>
</b>
</a>
</root>
我想寫的XPath表達式將計算爲:
1 on 3 off
也就是說,我想提取id
節點的文本並將其與status
節點連接起來。還有一個額外的條件:我只想在name
爲「A1」的情況下執行此操作。 XPath表達式只得到了id
是這樣的:
//name[text()="A1"]/../../id/text()
而這裏來連接id
與它的同胞status
,這不工作的嘗試。
//name[text()="A1"]/../../concat(id/text() , status/text())
我試圖做甚至可能嗎?如果是這樣,那麼正確的XPath表達式是什麼?
澄清:我沒有做任何的轉換與此表達,我只是將其插入到XPath表達式求值(如在記事本++或JEDIT - 通過插件),以幫助在調試微妙的數據錯誤非常大的XML文件。在此示例中,如果b
子元素具有name="A1"
,則id
和status
的某些組合可能不正確,因此我試圖用一個簡單表達式來查找它們,而不是手動滾動文件。
嗯...我用於Notepad ++的插件似乎不支持XPath 2.0,也沒有JEdit插件(它們都給我「非法令牌」類型的錯誤)。你可以推薦哪些好的工具/編輯器來評估它?或者在Xpath 1.x中做到這一點,如果可能的話。 – FrustratedWithFormsDesigner 2012-03-16 19:59:30
氧氣看起來像一個漂亮的漂亮的工具,但我不需要它的大部分功能,我不認爲我可以獲得這些許可證的預算。這真的只是我需要在我的工作站上進行調試和糾正XML文件,直到在幾周內修復生產。 – FrustratedWithFormsDesigner 2012-03-16 20:54:51
XQuery基於XPath 2.0,並且有一個[jEdit XQuery插件](http://plugins.jedit.org/plugins/?XQuery)。我沒有測試過這個插件,它使用了一箇舊版本的Saxon(Saxon 7),但也許它可能會有用。 – mzjn 2012-03-17 09:31:32