[問題] 無法使用xpath解析的xml內容

作者: rexhuang (BlueCancer)   2020-11-16 23:18:06
※問題類別:
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處理
雖然可以達到目地,但想請教先進是否有更好的處理方式?
感謝
※錯誤訊息:
無,只是想知道是否有更好的處理方式?
※補充說明:
作者: LZN (秋)   2020-11-17 15:25:00
eElement.getElementsByTagName("entry").item(0).getChildNodes().item(1).getNodeValue() ?
作者: jej (晃奶大馬桶)   2020-11-17 19:42:00
字串嗎?正則表示式是你的好朋友喔方法其實很多 如果你不限制xpath的話 jaxb也可以解決
作者: LZN (秋)   2020-11-19 11:01:00
.getChildNodes().item(1).getTextContent() <--這應該就可
作者: kentyeh (kent)   2019-02-16 13:39:00
XPathExpression expr = xpath.compile("//property[@name='output']//key[./value/text()='ID']/following-sibling::value/text()");String value = (String) expr.evaluate(doc, XPathConstants.STRING);如果排列順序不一定則xpath語法改成"//property[@name='output']//entry[./key/value/text()='ID']/value/text()"

Links booklink

Contact Us: admin [ a t ] ucptt.com