为了账号安全,请及时绑定邮箱和手机立即绑定

在根元素的语法中使用命名空间前缀解析 XML - Java

在根元素的语法中使用命名空间前缀解析 XML - Java

九州编程 2021-09-29 11:00:30
我有一个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


查看完整回答
反对 回复 2021-09-29
  • 1 回答
  • 0 关注
  • 188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信