是否有可用的免费XPath评估程序源代码?
我们有一个树形数据结构,它与XML并不太相似。但是,包含类似于XPath求值程序(轻量级)的东西来浏览结构会很棒。
XPath表达式很酷,例如:
\节点1 * \ Child20 * \ {节点1 {3}} 总和(\节点1 * \值)
等等......我认为自己实施解决方案需要一段时间,但遗憾的是我们的时间紧迫。我们需要使用source来使我们能够基于标记化的字符串来完成我们的结构。
我不是在寻找XPath库,只是用来评估XPath样式表达式的代码。
我希望能够解释基于XPath的表达式并处理我们自己的内部数据结构 - 我们自己的对象模型实现。
我的旅行中遇到过1,但从未使用它,但它似乎是我可以使用的东西。有没有人用过这个?
谢谢,
Andez
答案 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将采用类似的方法。但由于许可原因,我自己无法使用它。