2017-01-31 7 views
0

Я пытаюсь использовать XPath в моем веб-приложение с Saxon 9.7.0-14 EE и XMLBeans-2.6.0/XMLBeans-XPath-2.6.0Saxon 9,7 и XMLBeans/XPath

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

с

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]; 
     } 
    } 

и у меня есть эта ошибка

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"/> 
+0

Это сообщение обычно указывает, что классы саксона не найдены. Стоит дважды проверить, чтобы файлы jar были фактически установлены там, где они должны быть, и что имена файлов jar в этих значениях 'path' в вашем' module.xml' соответствуют фактическим именам файлов jar в файловая система. Возможно также, что вам нужно убедиться, что версия Saxon соответствует тем, что, по словам разработчиков XMLBeans, должно быть. – sideshowbarker

+0

Файлы JAR кажутся правильными, и я попал в каталог модулей JBoss. Глядя сюда https://wiki.apache.org/xmlbeans/XmlBeansFaq#whatJars кажется, что Saxon 9.7 не поддерживается XMLBeans. Я ошибаюсь ? – user817057

+0

Вот мой каталог модулей JBoss http://imageshack.com/a/img924/9306/K0MIpI.png – user817057

ответ

0

Я не эксперт по XMLBeans, но мне интересно, если проблема заключается в том, что выражение "XPath" в вопросе

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

не является true XPath (из-за «declare namespace») и, следовательно, не работает с сторонним движком XPath?

+0

Это, например, работает Movement mov = (Movement) XPathUtils.executeQueryNoResultNull (message.getPayload(), "// trx: Movement"); .... проблемы, кажется, "[@ tipo = 'RESTO']" – user817057

+0

Что заставляет вас думать, что проблема - это предикат (который действителен XPath), а не объявление пространства имен (а это не так)? –

Смежные вопросы