首页 > 解决方案 > .Net Core 3.1 和 .Net 5.0 是否支持 XPath 2.0?

问题描述

我正在尝试没有命名空间的 XPathNavigator.SelectSingleNode。

带有命名空间的初始版本 string Val1 = nav.SelectSingleNode("/nn:AAA/nn:SomeTag/@Code", nsmgr).Value;工作正常。

我正在尝试摆脱命名空间的选项:

string Val2 = nav.SelectSingleNode("/*[local-name()='AAA']/*[local-name()='SomeTag']/@Code", nsmgr).Value;
string Val3 = nav.SelectSingleNode("/*:AAA/*:SomeTag/@Code", nsmg).Value;
string Val4 = nav.SelectSingleNode("/*:AAA/*:SomeTag/@Code").Value;

Val2像使用 XPath 1.0 函数一样工作。但是两者都Val3抛出Val4异常“无效令牌”。

应接受通配符,因为文档https://docs.microsoft.com/en-us/dotnet/api/system.xml.xpath?view=netcore-3.1表示它支持 XPath 2.0 数据模型。

同样说问题的答案是否可以在使用 xPath 时忽略 c# 中的命名空间?

标签: c#xmlxpath.net-core

解决方案


它们可能支持 XPath 2.0 数据模型,但我很确定它们不支持 XPath 2.0 语法或 XPath 2.0 函数库。

有关于 XPath 2.0 支持 .NET 在XPath 和 XSLT 2.0 支持 .NET 的信息吗?

不幸的是,当前用于 .NET 的 Saxon 产品不适用于 .NET 5.0。我们希望有一种新产品能在几周内填补这一空白。


推荐阅读