我有一个元素的xpath,需要编写一个java代码,它给出了与对象完全相同的元素。我相信我需要使用SAX或DOM?我完全是新手..
xpath:
/*[local-name(.)='feed']/*[local-name(.)='entry']/*[local-name(.)='title']
答案 0 :(得分:0)
您的评论建议您使用DOM4J,它支持开箱即用的XPath:
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时找到了它,但没有找到我需要的东西。 但是,无论如何,也许您可以找到自己的。