【问题标题】:What version of XPath does XmlDocument.SelectSingleNode use?XmlDocument.SelectSingleNode 使用什么版本的 XPath?
【发布时间】:2015-06-19 15:05:55
【问题描述】:

我正在像这样使用XmlDocument 类:

divisionsDoc.SelectSingleNode(
    string.Format(@"Root/PoliticalDivisions/PoliticalDivision[upper-case(@Code)='{0}']", withCode.ToUpper()));

这会导致错误:

需要命名空间管理器或 XsltContext。这个查询有一个前缀, 变量,或用户定义的函数。

我认为这是由于 upper-case XPath 函数,我知道它存在于 XPath 2.0 而不是 1.0(来自 herehere 等)

MSDN 没有指定它使用的 XPath 版本。我的目标是 .NET 4.5.1——使用 XPath 2.0 还不够晚吗?或者是在其他地方(.NET 之外)定义的东西?

我如何才能找出目标 XPath 的版本?

请注意,我知道使用 translate('some text','abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ') 的解决方法——这不是我要问的。

【问题讨论】:

  • 顺便说一句,您是否需要在这里使用XPath?我个人只使用 LINQ to XML - 例如,无需担心 withCode 是否包含撇号 - 但我很感激您可能有其他要求。
  • 不...微软从未实现过 XPath 2.0 或 Xslt 2.0。例如,参见 2011 年的 stackoverflow.com/a/7521282/613130。在一条评论中,有人要求在 2014 年进行更新...

标签: c# .net xml xpath


【解决方案1】:

Microsoft 从未实现过 XPath 2.0 或 Xslt 2.0...例如,参见 2013 年的 uservoice(恰当地命名为 .NET 中对 XPath 2.0 或 XSLT 2.0 的原生支持)... p>

一位用户 2015 年 3 月的最后评论:

我想我们永远不会看到这种情况,因为世界不再喜欢 XML,这完全是关于 JSON。遗憾的是,对于许多关键场景,XML 仍然比 JSON 好得多。

【讨论】:

  • 2018 年 XPath 1.0 仍然是 .NET 中唯一受支持的版本,这令人难以置信的沮丧
  • 是的,如果您现在尝试该链接,您会发现他们已经完全取消了用户语音。没有“用户声音”。
猜你喜欢
  • 1970-01-01
  • 2014-11-27
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
相关资源
最近更新 更多