我有一个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.
1 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
这对我有用
/\*[local-name()='Envelope']/\*[local-name()='Triangle']/\*[local-name()='Triangle']/@time
添加回答
举报
0/150
提交
取消