![](/img/trans.png)
[英]How to select multiple text nodes as a single string using xpath expression?
[英]XPath select multiple nodes using a single path
假設我有一些看起來像這樣的XML:
<Users>
<User>Bob</User>
<User>Stefania</User>
</Users>
如果我想選擇第3行,則可以使用local-name()做到這一點的一種方法:
//*[local-name()='Users']/*[local-name()='User'][1]
我的問題是這個。 是否可以使用一條語句選擇多個節點? 我試過了:
//*[local-name()='Users/User'][1]
實際上,字符串將被變量替換。 在XForms中,一個真實的示例如下所示:
<xf:var name="users" value="'Users"/>
<xf:var name="user" value="'User"/>
<xf:setvalue ref="//*[local-name()=$users/$user][1]" value="'Jim'"/>
但這是行不通的。
我想要做的是這樣的:
<xf:var name="users" value="'Users"/>
<xf:var name="user" value="'User"/>
<xf:var name="myPath" value="'$users/$user'"/>
<xf:setvalue ref="//*[local-name()=$myPath][1]" value="'Jim'"/>
對於不在名稱空間中的XML,
<Users>
<User>Bob</User>
<User>Stefania</User>
</Users>
這個XPath
//User
在單個XPath中選擇多個節點(特別是元素),
<User>Bob</User>
<User>Stefania</User>
按照要求。
*[local-name()='User']
構造用於取消名稱空間,不建議這樣做。 請參閱XPath如何處理XML名稱空間? 如果您的XML實際上在名稱空間中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.