2 Stimmen

XPath kann keine Engine finden

Ich habe einen Code geerbt, der XPath verwendet, für den ich ein Anfänger bin. Ich habe es jetzt so, dass es das Dokument lädt, aber wenn die document.selectPath(queryPath) es immer mit dem folgenden Fehler fehlschlägt:

java.lang.RuntimeException:  Trying XBeans path engine... Trying XQRL... Trying delegated path engine... FAILED on //
        at org.apache.xmlbeans.impl.store.Path.getCompiledPath(Path.java:173)
        at org.apache.xmlbeans.impl.store.Path.getCompiledPath(Path.java:130)
        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:462)
        at org.apache.xmlbeans.impl.values.XmlObjectBase.selectPath(XmlObjectBase.java:446)

3voto

user368326 Punkte 31

Vielen Dank an jor für den Beitrag. Ich war verwirrt, da frühere Befehle zu xml beans erfolgreich waren.

Ohne saxon funktioniert das immer noch:

MapDocument doc;
...
String cityQuery = "$this//City";
XmlObject[] cities = doc.selectPath(cityQuery);

Für die explizite Auswahl von Feldern innerhalb von Tags ist jedoch saxon erforderlich:

String aveQuery= "$this//Street[Kind='Avenue']";
XmlObject[] avenues = doc.selectPath(aveQuery); // RuntimeException without saxon on path

java.lang.RuntimeException:
Trying XBeans path engine... Trying XQRL... Trying delegated path engine... FAILED on $this//Street[Kind='Avenue']

Ich hoffe, dass dies für andere, die ein ähnliches Problem haben, von Nutzen sein könnte.

2voto

jor Punkte 701

Sie benötigen eine XPath-Engine in Ihrem Klassenpfad, welche das ist, hängt von der XMLBeans-Version ab, siehe http://wiki.apache.org/xmlbeans/XmlBeansFaq#whatJars

2voto

user3861579 Punkte 21

Die Bewegung, wenn Sie [] in Ihrem xpath haben, ist es für die externe xpath enginer suchen. Sie müssen saxonb9-0-0-4j & xmlbeans-xpath-2.4.0.jar herunterladen und in den Klassenpfad hinzufügen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X