XPath查询适用于在线工具,但不适用于.NET

时间:2013-01-26 01:59:42

标签: c# .net xml xpath

我能够使用在线xpath工具获取以下xpath以对抗下面的xml,但我得到的是“表达式必须评估为节点集”。 .NET 4.5中的异常

的xpath:

//*[starts-with(name(.), "childnode")[identification/text()='xyz']]

的xml:

<rootnode>
    <childnode1234>
        <identification>xyz</identification>
    </childnode1234>
    <childnode3456>
        <identification>abc</identification>
    </childnode3456>
 </rootnode>

预期结果是

<childnode1234>
            <identification>xyz</identification>
        </childnode1234>

2 个答案:

答案 0 :(得分:4)

只需更改:

//*[starts-with(name(.), "childnode")[identification/text()='xyz']]

//*[starts-with(name(.), "childnode")][identification/text()='xyz']

我建议避免未经测试,明显错误的“无名”“在线xpath工具”

答案 1 :(得分:3)

在线实施太放松了。 Microsoft XPath是正确的:starts-with()计算为布尔值,而不是节点集。尝试

//*[starts-with(name(.), 'childnode') and identification/text()='xyz']