看板 java 關於我們 聯絡資訊
※問題類別: javax.xml和org.w3c.dom的使用 ※系統環境: Win 10、Java 8u265、Eclipse Version 2020-09 ※狀況概述: 我有串xml字串,範例如下 https://jsbin.com/hiwukowaqa/edit?html 我要擷取<entry><key><value>ID</value></key><value>01</value></entry> 抓出ID的值是01 ※程式碼: 因為無法使用以下這種javax.xml.xpath的方式處理 XPathExpression expression = xPath.compile("//beans//bean//property[@name='output']"); 所以改用org.w3c.dom的方式處理 Element eElement = (Element) nNode; eElement.getElementsByTagName("entry").item(0).getTextContent()); 會抓出ID01,再自己substring處理 雖然可以達到目地,但想請教先進是否有更好的處理方式? 感謝 ※錯誤訊息: 無,只是想知道是否有更好的處理方式? ※補充說明: 無 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.7.119 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/java/M.1605539890.A.9D1.html
LZN: eElement.getElementsByTagName("entry").item(0) 11/17 15:25
[entry: null]
LZN: .getChildNodes().item(1).getNodeValue() ? 11/17 15:27
null
jej: 字串嗎?正則表示式是你的好朋友喔 11/17 19:42
jej: 方法其實很多 如果你不限制xpath的話 jaxb也可以解決 11/17 19:45
感謝!沒用過jaxb,研究看看! ※ 編輯: rexhuang (114.43.7.119 臺灣), 11/17/2020 21:46:08
LZN: .getChildNodes().item(1).getTextContent() <--這應該就可 11/19 11:01
可以使用!非常感謝您的指導!^^ eElement.getElementsByTagName("entry").item(0).getChildNodes().item(0) .getTextContent() =>可以取得ID eElement.getElementsByTagName("entry").item(0).getChildNodes().item(1) .getTextContent() =>可以取得01 ※ 編輯: rexhuang (114.43.22.144 臺灣), 11/22/2020 19:09:20
kentyeh: XPathExpression expr = xpath.compile("//property[@na 02/16 13:39
kentyeh: me='output']//key[./value/text()='ID']/following-sib 02/16 13:39
kentyeh: ling::value/text()"); 02/16 13:39
kentyeh: String value = (String) expr.evaluate(doc, XPathCons 02/16 13:39
kentyeh: tants.STRING); 02/16 13:39
kentyeh: 如果排列順序不一定則xpath語法改成"//property[@name=' 02/17 10:12
kentyeh: output']//entry[./key/value/text()='ID']/value/text( 02/17 10:12
kentyeh: )" 02/17 10:12