php小編草莓帶您了解如何在Java中使用DOM從XML文件取得資料。 DOM(文件物件模型)是一種處理XML文件的標準方式,透過操作XML樹結構,我們可以輕鬆取得節點、元素和屬性等資訊。在Java中,我們可以利用DOM解析器來讀取XML文件並提取所需資料。接著,我們可以遍歷XML文件的節點,從中提取出我們需要的數據,實現靈活高效的數據獲取操作。
我正在嘗試使用 dom 解析 xml 文件,但最後只輸出最後一個條目多次(在循環中)。請告訴我,有什麼問題嗎? (我是java初學者)
xml 大約包含以下內容:
<channel> <title>www.google.com</title> <item> <title>www.youtube.com</title> </item> <item> <title>play.google.com</title> </item> ... </channel>
java 程式碼:
Node item = null; NodeList channelList = document.getElementsByTagName("channel"); for (int i = 0; i < channelList.getLength(); i++){ if (channelList.item(i).getNodeType() == Node.ELEMENT_NODE){ NodeList channelListChild = channelList.item(i).getChildNodes(); for (int j = 0; j < channelListChild.getLength(); j++){ if (channelListChild.item(j).getNodeType() == Node.ELEMENT_NODE){ switch (channelListChild.item(j).getNodeName()){ case "title":{ String title = channelListChild.item(j).getTextContent(); System.out.println(title); break; } case "item":{ item = channelListChild.item(j); break; } } } } } } if (item == null){ return; } String title = null; NodeList itemList = item.getChildNodes(); for (int i = 0; i < itemList.getLength(); i++){ if (itemList.item(i).getNodeType() == Node.ELEMENT_NODE){ switch (itemList.item(i).getNodeName()){ case "title":{ title = itemList.item(i).getTextContent(); break; } } } System.out.println(title); }
您在循環中依次將變數「item」指派給每個項目,因此退出時其值是遇到的最後一個item
元素。
您並不是唯一一個在此類應用程式中使用 java 和 dom 的人;這是一個流行的組合。但它已經接近25歲了,還有很多更好的選擇可供選擇。即使必須是 java,也有其他 api,例如 jdom2 和 xom,使用起來更友善。
saxon 的樹導航 api(受到 c# 世界中的 linq 的啟發)看起來像這樣:
XdmNode channel = document.getOutermostElement(); String title = channel.select(child("title")).asString(); System.out.println(title); channel.select(child("item")).forEach(item -> { String subtitle = item.select("title").asString(); System.out.println(subtitle); }
這是等效 dom 程式碼長度的一小部分。
[免責聲明:saxon是我公司的產品]
以上是在 Java 中使用 DOM 從 XML 文件取得數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!