【问题标题】:Determine if an XPath query is valid确定 XPath 查询是否有效
【发布时间】:2018-01-26 22:21:49
【问题描述】:

Saxon 或其他库中是否有方法可以告诉我 XPath 查询是否是有效语法。不是它是否会返回某些东西,不是节点是否存在于 XML 文件中,而是它是否是有效的语法。

我需要使用它来确定查询是 XPath 还是我们自己处理的方程式。

谢谢 - 戴夫

【问题讨论】:

  • This method 如果无法编译表达式,则抛出异常。

标签: xpath saxon


【解决方案1】:

最好的办法是调用 XPathCompiler.compile() 并捕获异常。我知道您担心例外的成本,但是在撒克逊人没有办法做到这一点而没有例外。

请注意,短语“有效语法”需要限定。 compile() 方法不仅会检查语法,还会检查其他静态错误,例如对不存在的变量和函数的引用。您可以通过为解析提供合适的静态上下文来影响此检查。

【讨论】:

  • 不幸的是,IKVM 使这种方法变得缓慢。您是否考虑过 TryParse(例如 C# 用于解析数字等)?
  • 不幸的是,这将是一个相当大的解析器重写(它比数字解析器大得多!)以满足绝对是一个相当特殊的要求。
  • 是的,我有种不好的预感。一个可能的XPath() 方法呢?还是那只会给我们带来麻烦?
  • stackoverflow.com/questions/36343209/… 的线程提出了一种不同的方法:抛出一个不包含堆栈跟踪的异常,这要便宜得多。但是这些信息都是 Java 特有的,我不知道它是如何传递到由 IKVM 交叉编译到 .NET 的代码的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 2017-11-07
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多