XPath 查询适用于联机工具,但不适用于 .NET

本文关键字:适用于 不适用 NET 工具 查询 联机 XPath | 更新日期: 2023-09-27 17:56:10

我能够使用在线 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>

XPath 查询适用于联机工具,但不适用于 .NET

只需更改:

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

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

我建议避免未经测试且明显有缺陷的"无名称"在线 xpath 工具"。

在线实现太宽松了。Microsoft XPath 是对的:starts-with()计算结果为布尔值,而不是节点集。尝试

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