參考資料:http://blog.johnsonlu.org/category/program/java/
Java解析xml或rss的方法有好幾種
這邊紀錄一下透過javax.xml和org.w3c.dom將xml轉換成DOM tree
範例用xml:
1 | <?xml version="1.0" encoding="UTF-8"?> |
5 | <description>Description</description> |
6 | <generator>Codeigniter</generator> |
8 | <title><![CDATA[XXXXXX]]></title> |
10 | <creator>行政部</creator> |
11 | <pubDate>Tue, 03 Jul 2012 00:00:01 +0800</pubDate> |
12 | <description><![CDATA[內文內文]]></description> |
Java:
1 | import javax.xml.parsers.DocumentBuilderFactory; |
2 | import javax.xml.parsers.DocumentBuilder; |
3 | import org.w3c.dom.Document; |
4 | import org.w3c.dom.NodeList; |
5 | import org.w3c.dom.Node; |
6 | import org.w3c.dom.Element; |
9 | public static void main(String argv[]) { |
12 | DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); |
14 | DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); |
18 | doc.getDocumentElement().normalize(); |
21 | System.out.println("Root Element :" + doc.getDocumentElement().getNodeName()); |
24 | NodeList nList = doc.getElementsByTagName("item"); |
25 | for (int temp = 0; temp < nList.getLength(); temp++) { |
27 | Node nNode = nList.item(temp); |
28 | if (nNode.getNodeType() == Node.ELEMENT_NODE) { |
29 | Element eElement = (Element) nNode; |
30 | System.out.println("Title : " + getTagValue("title", eElement)); |
31 | System.out.println("Link : " + getTagValue("link", eElement)); |
32 | System.out.println("Creator : " + getTagValue("creator", eElement)); |
35 | } catch (Exception e) { |
40 | private static String getTagValue(String sTag, Element eElement) { |
41 | NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes(); |
42 | Node nValue = (Node) nlList.item(0); |
43 | return nValue.getNodeValue(); |