我有一個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
提交
取消