XPath查找具有部分字符串的节点的子节点

时间:2017-08-25 12:27:26

标签: javascript xpath

我正在通过npm使用xpath并且我正在搜索XPath 1.0表达式,以便在&name?'之后进行搜索。并且'运行'应该产生以下输出。

找到第一个"父节点"使用" // * [包含(名称(),'名称')]"已经有效,但我不知道是否有可能通过其名称的一部分找到一个孩子(下面的任何级别)?

输入:

<root>
    <NameX>
       <getLenght>
         <unit>m</unit>
       </getLenght>
       <getStatus>
         <status>0</status>
       </getStatus>
   </NameX>
   <Name2>
       <getStatus>
         <status>0</status>
       </getStatus>
       <running>
         <bit>true</bit>
       </running>
   </Name2>
</root>

输出:

<running>
    <bit>true</bit>
</running>

1 个答案:

答案 0 :(得分:0)

Andersson的回答是正确的:

//*[contains(name(), 'name')]//*[contains(name(), 'run')]

高级示例:

如果要搜索至少包含子元素的父节点“名称”,例如'getLen' getStat',然后您可以使用此查询:

//*[contains(name(), 'Name')]//*[contains(name(), 'getLen') or 
contains(name(), 'getStat')]`

输出:

<NameX>
    <getLenght>
        <unit>m</unit>
    </getLenght>
    <getStatus>
        <status>0</status>
    </getStatus>
</NameX>