2017-01-31 3 views
0

Ich versuche XPath in meiner Web-Anwendung mit Saxon 9.7.0-14 EE und XMLBeans-2.6.0/XMLBeans-XPath-2.6.0Saxon 9.7 und XMLBeans/XPath

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

zu verwenden, um mit

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

und ich habe diesen Fehler

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) 

ist das Problem XMLBeans? Kann ich nur Saxon verwenden und XMLBeans entfernen?

Hier mein 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

Diese Nachricht zeigt normalerweise an, dass die sächsischen Klassen nicht gefunden werden. Es lohnt sich, zu überprüfen, ob die JAR-Dateien tatsächlich dort installiert sind, wo sie sein müssen, und dass die Namen der JAR-Dateien in diesen 'Pfad'-Werten in Ihrer' module.xml' mit den tatsächlichen Namen der JAR-Dateien in der Datei übereinstimmen Dateisystem. Es kann auch sein, dass Sie sicherstellen müssen, dass die Saxon-Version den XML-Beans entspricht. – sideshowbarker

+0

Die JAR-Dateien scheinen korrekt zu sein und ich habe sie im JBoss-Modulverzeichnis. Wenn Sie hier klicken, scheint https://wiki.apache.org/xmlbeans/XmlBeansFaq#whatJars, dass Saxon 9.7 nicht von XMLBeans unterstützt wird. Liege ich falsch ? – user817057

+0

Hier mein JBoss-Modulverzeichnis http://imageshack.com/a/img924/9306/K0MIpI.png – user817057

Antwort

0

Ich bin kein Experte auf XMLBeans, aber ich frage mich, ob das Problem ist, dass die "XPath" Ausdruck in Frage

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

ist nicht True XPath (wegen des 'Deklarieren Namensraum') und funktioniert daher nicht mit einer XPath-Engine von Drittanbietern?

+0

Dies funktioniert zum Beispiel Movement Mov = (Bewegung) XPathUtils.executeQueryNoResultNull (message.getPayload(), "// trx: Bewegung"); .... die Probleme scheinen zu sein "[@ tipo = 'RESTO']" – user817057

+0

Was lässt Sie denken, dass das Problem das Prädikat (das gültige XPath ist) eher als die Namensraumdeklaration ist (was nicht ist)? –

Verwandte Themen