.Net Core 3.1 和 .Net 5.0 是不是支持 XPath 2.0?

Posted

技术标签:

【中文标题】.Net Core 3.1 和 .Net 5.0 是不是支持 XPath 2.0?【英文标题】:Does .Net Core 3.1 and .Net 5.0 support XPath 2.0?.Net Core 3.1 和 .Net 5.0 是否支持 XPath 2.0? 【发布时间】:2021-11-06 13:19:49 【问题描述】:

我正在尝试没有命名空间的 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 函数。然而Val3Val4 都抛出异常“Invalid token”。

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

同样回答问题Is it possible to ignore namespaces in c# when using xPath?

【问题讨论】:

【参考方案1】:

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

XPath and XSLT 2.0 for .NET? 有关于 XPath 2.0 对 .NET 的支持的信息

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

【讨论】:

以上是关于.Net Core 3.1 和 .Net 5.0 是不是支持 XPath 2.0?的主要内容,如果未能解决你的问题,请参考以下文章

从 3.1 升级后的 .NET Core 5.0 Azure 部署 CORS 问题

通过 ASP.NET Core 3.1/5.0 MVC 中的脚本使用选定的 ''value='' 填充数据库

[WebApi]ASP.Net Core 中使用JWT认证(3.1版本,5.0也可以使用)

[WebApi]ASP.Net Core 中使用JWT认证(3.1版本,5.0也可以使用)

docker启动.NET3.1与5.0的包

.net core 3.1 webapi解决跨域问题 GET DELETE POST PUT等