我使用XPath來解析RSS XML數據與CDATA標籤的節點值,並且數據如何使用XPath找到的java
<rss version="2.0">
<channel>
<title>
<![CDATA[sports news]]>
</title>
</channel>
</rss>
我想使用XPath「來獲取文本「體育新聞」/rss/channel/title/text()「,但結果不是我想要的,真正的結果是」\ r \ n「,所以如何找到我想要的結果。
的代碼如下:
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is); XPathFactory xpathFactory = XPathFactory.newInstance(); XPath xPath = xpathFactory.newXPath(); Node node = (Node) xPath.evaluate("/rss/channel/title/text()", doc,XPathConstants.NODE); String title = node.getNodeValue();
或傳遞XPathConstants.NODESET,並將評估分配給NodeList。但合併更容易。 – MeBigFatGuy
正式的,在XPath數據模型中,文本節點永遠不會被分割,所以你的查詢應該返回你期望的結果。實際上,在DOM上工作的一些XPath實現將無法連接相鄰的文本節點。一種解決方案是避免使用text()(而不是使用元素上的string());另一個是按照建議使用setCoalescing()第三個是使用符合標準的XPath處理器,例如Saxon。 –