XPath查找节点共享节点名称

时间:2014-10-14 12:53:14

标签: xml xpath

假设我有以下XML。

<Table>
    <Row1>
        <Name>My Name</Name>
        <LastName>LastName</LastName>
    </Row1>
    <Row2>
        <Name>My Name2</Name>
        <LastName>LastName2</LastName>
    </Row2>
</Table>

我明白这是糟糕的布局,我不能不幸地改变它。所以,我想找到包含Nodes

的所有'Row'

我试过这个表达但不幸的是它看起来似乎没有用: //Table//*[contains(.,'Row')]

知道我该怎么做吗?

2 个答案:

答案 0 :(得分:3)

*[contains(.,'Row')]

检查包含子字符串Row的元素 - 如果您想要 name 包含该字符串的元素,则需要

*[contains(name(),'Row')]

或者如果你想更具体

*[starts-with(local-name(),'Row')]

仅查找Row1Row2RowFoo等,但不是AnotherRow

答案 1 :(得分:1)

我会用

//*[starts-with(local-name(),'Row')]
像伊恩建议的那样。

或更好

//Table/*[starts-with(local-name(),'Row')]