如何将xpath转换为java代码

时间:2015-01-20 17:08:17

标签: java dom xpath sax

我有一个元素的xpath,需要编写一个java代码,它给出了与对象完全相同的元素。我相信我需要使用SAX或DOM?我完全是新手..

xpath:

/*[local-name(.)='feed']/*[local-name(.)='entry']/*[local-name(.)='title']

2 个答案:

答案 0 :(得分:0)

您的评论建议您使用DOM4J,它支持开箱即用的XP​​ath:

SAXReader reader = new SAXReader();
Document doc = reader.read(new File(....)); // or URL, or wherever the XML comes from
Node selectedNode = doc.selectSingleNode("/*[local-name(.)='feed']/*[local-name(.)='entry']/*[local-name(.)='title']");

(或者还有selectNodes返回List,如果可能有多个节点匹配该XPath表达式 - 很可能这是一个Atom提要。)

但是,如果您知道XML中元素的名称空间URI,而不是像这样使用local-name hack,则可以为此命名空间声明前缀,并按其完全限定名称选择节点:

SAXReader reader = new SAXReader();
Map<String, String> namespaces = new HashMap<>();
namespaces.put("atom", "http://www.w3.org/2005/Atom");
reader.getDocumentFactory().setXPathNamespaceURIs(namespaces);

Document doc = reader.read(new File(....)); // or URL, or wherever the XML comes from
List selectedNodes = doc.selectNodes("/atom:feed/atom:entry/atom:title");

答案 1 :(得分:0)

在这里阅读: https://howtodoinjava.com/java/xml/java-xpath-tutorial-example/

我在寻找如何将Xpath PMD-rule转换为java-rule时找到了它,但没有找到我需要的东西。 但是,无论如何,也许您可​​以找到自己的。