2009-02-09 111 views
2

我繼承了一些使用XPath的代碼,因此我是新手。我現在以便它加載該文件有它,但是當document.selectPath(QueryPath中),它總是失敗,出現以下錯誤: XPath無法找到引擎

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) 

回答

2

您需要一個XPath引擎在類路徑,這對XMLBeans的版本一個bepends ,請參閱 http://wiki.apache.org/xmlbeans/XmlBeansFaq#whatJars

+0

這是我繼承的一個項目,所以我認爲他們已經設置好了。打開我們的我的classpath中有正確的xbeans jar,但是錯誤的saxon jar,或者至少錯誤版本的2.我redownloaded並且現在都集合了。 – 2009-02-21 16:30:15

2

謝謝你jor的職位。我很困惑,因爲之前的命令xml bean成功了。

沒有撒克遜人,這仍然有效:

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

但是需要撒克遜的領域的明確選擇標籤內:

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'] 

我希望這可能是用於遇到類似問題的其他人。

1

移動如果你在xpath中有[],它正在搜索外部xpath引擎..你必須下載saxonb9-0-0-4j & xmlbeans-xpath-2.4.0.jar並添加到classpath