2017-02-09 36 views
0

我有以下XML。捕获属性ID并用它在XPath中搜索

<root> 
    <items> 
    <item attr="value1" id="id1"> ... </item> 
    <item attr="value2" id="id2"> ... </item> 
    </items> 
    <offers> 
    <offer id="id1"> 
     <elem> someText </elem> 
    </offer> 
    <offer id="id2"> 
     <elem> someText </elem> 
    </offer> 
    </offers> 
</root> 

有没有办法使用XPath选择 - - 在elem标签对于其attr="value1"item

基本上,我需要知道,如果有一种方法来捕获itemid值,并用它来寻找相应的offer

我知道我可以简单地使用ids。但我在运行时构建这个XPath,我只知道attr的值。

回答

2

我假设你正在寻找的elem这是offer一个孩子,他的属性iditem标签的id的属性相匹配

下面的XPath应该给你的是:

//offers/offer[@id=(//item[@attr="value1"]/@id)]/elem

它寻找offer标签,其id属性匹配具有相同属性值的任何item标签a然后返回elem标签。

如果你想里面的文字,只是在XPath的末尾添加text(),如:

//offers/offer[@id=(//item[@attr="value1"]/@id)]/elem/text()