代码之家  ›  专栏  ›  技术社区  ›  Erik

xpath找不到引擎

  •  2
  • Erik  · 技术社区  · 16 年前

    我继承了一些使用XPath的代码,我对这些代码还是个新手。我现在有了它以便它加载文档,但是当document.selectpath(querypath)时,它总是失败,并出现以下错误:

    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)
    

    3 回复  |  直到 8 年前
        1
  •  2
  •   jor    16 年前

    类路径中需要一个xpath引擎,它依赖于xmlbeans版本,请参见 http://wiki.apache.org/xmlbeans/XmlBeansFaq#whatJars

        2
  •  3
  •   takrl cck    14 年前

    谢谢你乔的帖子。我很困惑,因为之前对XML bean的命令是成功的。

    没有萨克森,这仍然有效:

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

    但是,要显式选择标记中的字段,需要使用saxon:

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

    我希望这可能对其他遇到类似问题的人有用。

        3
  •  2
  •   user3861579    9 年前

    移动如果您的xpath中有[],它将搜索外部xpath引擎。您必须下载saxonb9-0-0-4j&xmlbeans-xpath-2.4.0.jar并添加到类路径