-1

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

我们有一个与 XML 不太相似的树形数据结构。但是,最好包含类似于 XPath 评估器(轻量级)的东西来导航结构。

对 XPath 表达式会很酷,例如:

\Node1*\Child20* \Node1 1 总和(\Node1*\value)

等等等等……

我认为自己实施解决方案需要一段时间,但不幸的是,我们的时间表非常紧迫。我们需要 source 以使我们能够根据标记化的字符串遍历我们的结构。

我不是在寻找这样的 XPath 库,而是在寻找评估 XPath 样式表达式的代码。

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

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

谢谢,

安德斯

4

5 回答 5

1

HTML Cleaner很不错,我总是用这个库来做 Xpath 解析器。你可以试试:http ://htmlcleaner.sourceforge.net/

于 2011-10-06T09:29:09.987 回答
1

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

于 2011-10-06T10:30:46.130 回答
0

JXPath 应该适合这个。但是您可能必须将它与您的数据结构集成,如http://commons.apache.org/jxpath/users-guide.html#Custom_Pointers_and_Iterators中所述。

我最近做了类似的事情,它工作得很好。文档有点薄弱,但看起来像 DomNodePointer/Dom***Iterator 这样的现有实现应该对您的实现有很大帮助。

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

于 2011-10-22T09:34:49.563 回答
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);
于 2011-10-06T09:43:28.113 回答
0

如果您为数据结构编写适配器以实现 Saxon 的 NodeInfo 接口,Saxon 的 XPath 引擎将与任何输入数据结构一起工作。与修改 XPath 处理器的源代码相比,这似乎是一种更简洁的方法,而您必须永远维护它。

于 2011-10-06T12:36:56.383 回答