好的免费Java XPath评估源 - 也许是JXPath?

时间:2011-10-06 09:22:23

标签: java xpath equivalent

是否有可用的免费XPath评估程序源代码?

我们有一个树形数据结构,它与XML并不太相似。但是,包含类似于XPath求值程序(轻量级)的东西来浏览结构会很棒。

XPath表达式很酷,例如:

\节点1 * \ Child20 * \ {节点1 {3}} 总和(\节点1 * \值)

等等......

我认为自己实施解决方案需要一段时间,但遗憾的是我们的时间紧迫。我们需要使用source来使我们能够基于标记化的字符串来完成我们的结构。

我不是在寻找XPath库,只是用来评估XPath样式表达式的代码。

我希望能够解释基于XPath的表达式并处理我们自己的内部数据结构 - 我们自己的对象模型实现。

我的旅行中遇到过1,但从未使用它,但它似乎是我可以使用的东西。有没有人用过这个?

谢谢,

Andez

5 个答案:

答案 0 :(得分:1)

HTML Cleaner非常好,我总是将此库用于Xpath解析器。您可以尝试:http://htmlcleaner.sourceforge.net/

答案 1 :(得分:1)

您将在Apache Xalan中找到Java中XPath的完整开源实现。

答案 2 :(得分:0)

Java内置了XPath支持。

以下代码提取xpath表达式的值:

String xml = ".... your xml goes here ...";
String expression = "... your XPath goes here ...";
DocumentBuilderFactory xmlFact = DocumentBuilderFactory.newInstance();
xmlFact.setNamespaceAware(true);
DocumentBuilder builder = xmlFact.newDocumentBuilder();
InputSource inputSource = new InputSource(new StringReader(xml));
Document doc = builder.parse(inputSource);
XPath xpath = XPathFactory.newInstance().newXPath();
String value = (String) xpath.evaluate(expression, doc, XPathConstants.STRING);

答案 3 :(得分:0)

如果为数据结构编写适配器以实现Saxon的NodeInfo接口,Saxon的XPath引擎将适用于任何输入数据结构。这似乎比修改XPath处理器的源代码要简洁得多,然后你必须永远维护它。

答案 4 :(得分:0)

JXPath应该没问题。但您可能需要将其与您的数据结构集成,如http://commons.apache.org/jxpath/users-guide.html#Custom_Pointers_and_Iterators所述。

我最近做了类似的事情,它很安静。文档有点弱,但是看看像DomNodePointer / Dom *** Iterator这样的现有实现应该对你的实现有很大的帮助。

为了完整起见,Jaxen将采用类似的方法。但由于许可原因,我自己无法使用它。