我有一个XML形式:
<?xml version="1.0" encoding="UTF-8"?>
<semseg:Envelope xmlns:semseg="http://a-random-URL" xmlns="http://another-random-URL">
<semseg:subject>Subject</semseg:subject>
<semseg:Sender>
<semseg:name>Me</semseg:name>
</semseg:Sender>
<Triangle>
<Triangle time='2017-11-29'>
<Triangle key='a' value='b'/>
<Triangle key='c' value='d'/>
<Triangle key='e' value='f'/>
<Triangle key='g' value='h'/>
</Triangle>
</Triangle>
</semseg:Envelope>
我试图检索元<Triangle>(不 <Triangle time='2017-11-29'>-元素名称是在这个XML有点重复)使用XPath。部分代码如下:
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.parse("file.xml");
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xPath = xPathFactory.newXPath();
XPathExpression xpr = xPath.compile("/semseg:Envelope/Triangle");
NodeList nodes = (NodeList)xpr.evaluate(doc, XPathConstants.NODESET);
XPath不幸的是,由于没有选择任何元素,我已经尝试了许多可能的组合,但没有任何运气。尽管如此,XPath使用这个在线XPath检查器和相同的XML文件测试相同的结果会产生我正在寻找的结果。它甚至适用于使用 XPaths 进行属性检索,例如
/semseg:Envelope/Triangle/Triangle/@time
似乎命名空间前缀有问题。解析XML没有任何命名空间前缀的 s 与XPath.
有只小跳蛙
相关分类