首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Saxon9.7和XMLBeans / XPath

Saxon9.7和XMLBeans / XPath
EN

Stack Overflow用户
提问于 2017-01-31 21:32:51
回答 2查看 1.1K关注 0票数 0

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

代码语言:javascript
复制
Movement mov = (Movement) XPathUtils.executeQueryNoResultNull(message.getPayload(), "//trx:Movement [@tipo='RESTO']");

使用

代码语言:javascript
复制
public static XmlObject executeQueryNoResultNull(XmlObject source, String query) {
        XmlObject[] results = source.selectPath(DECLARE_NS + "$this" + query);
        if (results.length == 0) {
            return null;
        } else {
            return results[0];
        }
    }

我有这个错误

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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"/>
EN

回答 2

Stack Overflow用户

发布于 2019-04-18 02:00:21

对于XMLBeans版本3.1.0,我成功使用的SaxonHE的最新版本是9.2.1-5。版本9.3及更高版本的任何内容都会触发您已经看到的错误,即尝试查找可以处理带有谓词的查询的XPath引擎失败。XMLBeans文档说明了查询在没有谓词的情况下工作的原因:

默认情况下,XMLBeans仅支持非常简单的XPath表达式。要执行复杂的表达式--比如那些带有谓词、函数调用等的表达式--您需要在类路径中使用xbean_xpath.jar和Saxon jars (如下所示)。

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

票数 2
EN

Stack Overflow用户

发布于 2017-02-03 17:47:07

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

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

是不是真的XPath (因为‘声明命名空间’),因此不能与第三方XPath引擎一起工作?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41958924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档