Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Saxon 9.7和XMLBeans/XPath_Xpath_Saxon_Xmlbeans - Fatal编程技术网

Saxon 9.7和XMLBeans/XPath

Saxon 9.7和XMLBeans/XPath,xpath,saxon,xmlbeans,Xpath,Saxon,Xmlbeans,我正在尝试在我的Web应用程序中使用XPath,使用Saxon 9.7.0-14 EE和xmlbeans-2.6.0/xmlbeans-XPath-2.6.0 Movement mov = (Movement) XPathUtils.executeQueryNoResultNull(message.getPayload(), "//trx:Movement [@tipo='RESTO']"); 与 我有这个错误 java.lang.RuntimeException: Trying XBean

我正在尝试在我的Web应用程序中使用XPath,使用Saxon 9.7.0-14 EE和xmlbeans-2.6.0/xmlbeans-XPath-2.6.0

Movement mov = (Movement) XPathUtils.executeQueryNoResultNull(message.getPayload(), "//trx:Movement [@tipo='RESTO']");

我有这个错误

java.lang.RuntimeException:  Trying XBeans path engine... Trying XQRL... Trying XDK... Trying delegated path engine... FAILED on declare namespace trx='http://www.test.com/xxx/xx/trx';$this//trx:Movement[@tipo='RESTO']
    at org.apache.xmlbeans.impl.store.Path.getCompiledPath(Path.java:185)
    at org.apache.xmlbeans.impl.store.Path.getCompiledPath(Path.java:136)
    at org.apache.xmlbeans.impl.store.Cursor._selectPath(Cursor.java:902)
    at org.apache.xmlbeans.impl.store.Cursor.selectPath(Cursor.java:2634)
    at org.apache.xmlbeans.impl.values.XmlObjectBase.selectPath(XmlObjectBase.java:476)
    at org.apache.xmlbeans.impl.values.XmlObjectBase.selectPath(XmlObjectBase.java:460)
问题出在XMLBeans上吗?我可以只使用Saxon并删除XMLBeans吗

这里是我的module.xml

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="app-common">
    <resources>
        <resource-root path="jsr173_1.0_api.jar"/>
        <resource-root path="resolver.jar"/>
        <resource-root path="xbean_xpath.jar"/>
        <resource-root path="saxon9ee.jar"/>
        <resource-root path="saxon9-dom.jar"/>
        <resource-root path="xmlbeans-2.6.0.jar"/>

我不是XMLBeans方面的专家,但我想知道问题是否在于所讨论的“XPath”表达式

declare namespace trx='1〕http://www.test.com/xxx/xx/trx';$这个//trx:Movement[@tipo='RESTO']


不是真正的XPath(因为“declare namespace”),因此不能与第三方XPath引擎一起工作?

我不是XMLBeans方面的专家,但我想知道问题是否在于所讨论的“XPath”表达式

declare namespace trx='1〕http://www.test.com/xxx/xx/trx';$这个//trx:Movement[@tipo='RESTO']


不是真正的XPath(因为“声明命名空间”),因此不能与第三方XPath引擎一起使用?

对于XMLBeans版本3.1.0,我成功使用的最新版本SaxonHE是9.2.1-5。9.3及以上版本中的任何内容都会触发您所看到的错误,即试图找到能够处理谓词查询的XPath引擎失败。XMLBeans记录了查询在没有谓词的情况下工作的原因:

默认情况下,XMLBeans只支持非常简单的XPath表达式。到 执行复杂的表达式-例如带有谓词、函数的表达式 调用等—您将需要xbean_xpath.jar和Saxon jar (见下文)在您的类路径上


对于XMLBeans 3.x,您不需要包含xbean_xpath.jar(类包含在XMLBeans-3.1.0.jar中),尽管文档尚未更新以反映这一点。

对于XMLBeans 3.1.0版,我成功使用的最新版本是9.2.1-5。9.3及以上版本中的任何内容都会触发您所看到的错误,即试图找到能够处理谓词查询的XPath引擎失败。XMLBeans记录了查询在没有谓词的情况下工作的原因:

默认情况下,XMLBeans只支持非常简单的XPath表达式。到 执行复杂的表达式-例如带有谓词、函数的表达式 调用等—您将需要xbean_xpath.jar和Saxon jar (见下文)在您的类路径上


对于XMLBeans 3.x,您不需要包含xbean_xpath.jar(类包含在XMLBeans-3.1.0.jar中),尽管文档尚未更新以反映这一点。

该消息通常表示找不到Saxon类。值得仔细检查,以确保jar文件实际安装在需要的位置,并且
module.xml
中那些
路径
值中的jar文件名与文件系统中jar文件的实际名称匹配。还可能是您需要确保Saxon版本与XMLBeans文档所说的任何版本都匹配。JAR文件似乎是正确的,我将它们放在JBoss模块目录中。看这里,似乎XMLBeans不支持Saxon 9.7。我错了吗?在这张图片中我的JBoss modules目录中,我注意到所有其他jar都有相应的
.jar.index
文件,但没有列出
saxon9ee.jar.index
文件。这似乎很奇怪。无论如何,否则所有这些看起来都与module.xml文件中的路径匹配。至于XMLBeans是否支持Saxon 9.7,文档没有明确表示不支持它,而是在Saxon 9.7出现之前编写的。因此,这更像是他们还没有用XMLBeans测试Saxon 9.7并记录它的工作原理。我还注意到Saxon 9ee.jar没有文件索引,但为什么呢?该消息通常表示找不到Saxon类。值得仔细检查,以确保jar文件实际安装在需要的位置,并且
module.xml
中那些
路径
值中的jar文件名与文件系统中jar文件的实际名称匹配。还可能是您需要确保Saxon版本与XMLBeans文档所说的任何版本都匹配。JAR文件似乎是正确的,我将它们放在JBoss模块目录中。看这里,似乎XMLBeans不支持Saxon 9.7。我错了吗?在这张图片中我的JBoss modules目录中,我注意到所有其他jar都有相应的
.jar.index
文件,但没有列出
saxon9ee.jar.index
文件。这似乎很奇怪。无论如何,否则所有这些看起来都与module.xml文件中的路径匹配。至于XMLBeans是否支持Saxon 9.7,文档没有明确表示不支持它,而是在Saxon 9.7出现之前编写的。因此,这更像是他们还没有用XMLBeans测试Saxon 9.7并记录它的工作原理。我还注意到Saxon 9ee.jar没有文件索引,但为什么呢?例如,这一个可以工作Movement mov=(Movement)XPathUtils.executeQueryNoResultNull(message.getPayload(),“//trx:Movement”)。。。。问题似乎是“[@tipo='RESTO']”什么使您认为问题是谓词(有效XPath)而不是命名空间声明(无效)?例如,这一个适用于Movement mov=(Movement)XPathUtils.executeQueryNoResultNull(message.getPayload(),“//trx:Movement”)。。。。问题似乎是“[@tipo='RESTO']”什么使您认为问题是谓词(有效的XPath)而不是名称空间声明(不是)?
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="app-common">
    <resources>
        <resource-root path="jsr173_1.0_api.jar"/>
        <resource-root path="resolver.jar"/>
        <resource-root path="xbean_xpath.jar"/>
        <resource-root path="saxon9ee.jar"/>
        <resource-root path="saxon9-dom.jar"/>
        <resource-root path="xmlbeans-2.6.0.jar"/>