Java解析XML簡單版


JAVA 文件

Main:

Reader.java
   
   
   
           
  1. import java.util.List;
  2. public class Reader {
  3. /**
  4. * @author lxh
  5. * @param args
  6. */
  7. public static void main(String[] args) {
  8. try {
  9. List<String> list = XmlReader.readXml("dailyreport");
  10. System.out.println(list);//輸出列表。
  11. System.out.println(list.get(2));//輸出列表內索引為2的值。
  12. } catch (Exception e) {
  13. e.printStackTrace();
  14. }
  15. }
  16. }

XmlReader.java

   
   
   
           
  1. import java.util.*;
  2. import java.io.File;
  3. import javax.xml.parsers.*;
  4. import org.w3c.dom.*;
  5. public class XmlReader {
  6. public static List<String> readXml(String nodeName) throws Exception {
  7. DocumentBuilder db = DocumentBuilderFactory.newInstance()
  8. .newDocumentBuilder();
  9. Document document = db.parse(new File("test.xml"));// 把XML文件解析成DOCUMENT類型
  10. Element root = document.getDocumentElement();
  11. String NodeName=nodeName; //自選XML中的節點名
  12. NodeList list = root.getElementsByTagName(NodeName);// 獲得page元素
  13. List<String> list2=showElem(list);
  14. return list2;
  15. }
  16. public static List<String> showElem(NodeList nl) {
  17. List<String> list = new ArrayList<String>();
  18. for (int i = 0; i < nl.getLength(); i++) {
  19. Node n = nl.item(i);// 得到父節點
  20. // 子節點
  21. NodeList childList = n.getChildNodes();
  22. for (int x = 0; x < childList.getLength(); x++) {
  23. Node childNode = childList.item(x);
  24. // 判斷取出的值是否屬於Element元素,目的是過濾掉
  25. if (childNode instanceof Element) {
  26. // 得到子節點的名字
  27. //String childNodeName = childNode.getNodeName();
  28. //System.out.print("節點名:" + childNodeName);
  29. // 得到子節點的值
  30. String childNodeValue = childNode.getTextContent();
  31. list.add(childNodeValue);
  32. System.out.println("節點值:" + childNodeValue);
  33. }
  34. }
  35. }
  36. return list;
  37. }
  38. }



test.xml

   
   
   
           
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <test>
  3. <project>
  4. <code>systemMessage</code>
  5. <title>標題:系統消息</title>
  6. <content>概要:您 管理的項目已天未派發新任務</content>
  7. <sendercode>system</sendercode>
  8. <sendername>發送者:系統</sendername>
  9. <receivercode>test</receivercode>
  10. <receivername>接受者:測試</receivername>
  11. <state>狀態:已讀</state>
  12. <desc>內容:您管理的項目已三天未派發新任務,請注意項目進度</desc>
  13. <type>類型:systemMessage</type>
  14. <sendtime>發送時間:2015-8-17</sendtime>
  15. <tocode>回復</tocode>
  16. </project>
  17. <dailyreport>
  18. <code>systemMessage</code>
  19. <title>標題:系統消息</title>
  20. <content>概要:您 已經三天未填寫日報務</content>
  21. <sendercode>system</sendercode>
  22. <sendername>發送者:系統</sendername>
  23. <receivercode>test</receivercode>
  24. <receivername>接受者:測試</receivername>
  25. <state>狀態:已讀</state>
  26. <desc>內容:您 已經三天未填寫日報務,請及時填寫</desc>
  27. <type>類型:systemMessage</type>
  28. <sendtime>發送時間:2015-8-17</sendtime>
  29. <tocode>回復</tocode>
  30. </dailyreport>
  31. </test>

輸出結果:

節點值:systemMessage
節點值:標題:系統消息
節點值:概要:您 已經三天未填寫日報務
節點值:system
節點值:發送者:系統
節點值:test
節點值:接受者:測試
節點值:狀態:已讀
節點值:內容: 您 已經三天未填寫日報務
節點值:類型:systemMessage
節點值:發送時間:2015-8-17
節點值:回復
[systemMessage, 標題:系統消息, 概要:您 已經三天未填寫日報務, system, 發送者:系統, test, 接受者:測試, 狀態:已讀, 內容:您管理的項目已三天未派發新任務,請注意項目進度, 類型:systemMessage, 發送時間:2015-8-17, 回復]
概要:您 已經三天未填寫日報務   












免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM