我需要验证xml上的规则,我需要正则表达式功能,只能在XPath 2.0上找到。我下载了最后一个Sonarqube 6.1,但XPath仍然是版本1.0。有没有办法使用2.0版本?
答案 0 :(得分:0)
通过快速查看源代码(org / sonar / api / utils / XpathParser.java),我看起来好像应用程序正在使用JAXP服务API来实例化XPath解析器。看看如果你
会发生什么(a)将Saxon放在classpath上,然后 (b)设置系统属性的值" javax.xml.xpath.XPathFactory"价值" net.sf.saxon.xpath.XPathFactoryImpl"
请注意,步骤(a)本身并不足够,因为Saxon不再使用META-INF机制将自己命名为XPath解析器 - 这导致了编写为假设使用的应用程序的太多问题Xalan。
这可能会或者可能不会成功拿起撒克逊人,如果它确实拿起撒克逊人,那么它可能会或者可能不会成功运行它。可能还有其他问题 - 例如,我注意到sonarqube中的XpathParser类创建了一个DOM,其namespaceAware设置为false,这不是一个好的开始。