JAVA 文件
Main:
Reader.java
import java.util.List;
public class Reader {
/**
* @author lxh
* @param args
*/
public static void main(String[] args) {
try {
List<String> list = XmlReader.readXml("dailyreport");
System.out.println(list);//輸出列表。
System.out.println(list.get(2));//輸出列表內索引為2的值。
} catch (Exception e) {
e.printStackTrace();
}
}
}
XmlReader.java
import java.util.*;
import java.io.File;
import javax.xml.parsers.*;
import org.w3c.dom.*;
public class XmlReader {
public static List<String> readXml(String nodeName) throws Exception {
DocumentBuilder db = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
Document document = db.parse(new File("test.xml"));// 把XML文件解析成DOCUMENT類型
Element root = document.getDocumentElement();
String NodeName=nodeName; //自選XML中的節點名
NodeList list = root.getElementsByTagName(NodeName);// 獲得page元素
List<String> list2=showElem(list);
return list2;
}
public static List<String> showElem(NodeList nl) {
List<String> list = new ArrayList<String>();
for (int i = 0; i < nl.getLength(); i++) {
Node n = nl.item(i);// 得到父節點
// 子節點
NodeList childList = n.getChildNodes();
for (int x = 0; x < childList.getLength(); x++) {
Node childNode = childList.item(x);
// 判斷取出的值是否屬於Element元素,目的是過濾掉
if (childNode instanceof Element) {
// 得到子節點的名字
//String childNodeName = childNode.getNodeName();
//System.out.print("節點名:" + childNodeName);
// 得到子節點的值
String childNodeValue = childNode.getTextContent();
list.add(childNodeValue);
System.out.println("節點值:" + childNodeValue);
}
}
}
return list;
}
}
test.xml
<?xml version="1.0" encoding="utf-8"?>
<test>
<project>
<code>systemMessage</code>
<title>標題:系統消息</title>
<content>概要:您 管理的項目已天未派發新任務</content>
<sendercode>system</sendercode>
<sendername>發送者:系統</sendername>
<receivercode>test</receivercode>
<receivername>接受者:測試</receivername>
<state>狀態:已讀</state>
<desc>內容:您管理的項目已三天未派發新任務,請注意項目進度</desc>
<type>類型:systemMessage</type>
<sendtime>發送時間:2015-8-17</sendtime>
<tocode>回復</tocode>
</project>
<dailyreport>
<code>systemMessage</code>
<title>標題:系統消息</title>
<content>概要:您 已經三天未填寫日報務</content>
<sendercode>system</sendercode>
<sendername>發送者:系統</sendername>
<receivercode>test</receivercode>
<receivername>接受者:測試</receivername>
<state>狀態:已讀</state>
<desc>內容:您 已經三天未填寫日報務,請及時填寫</desc>
<type>類型:systemMessage</type>
<sendtime>發送時間:2015-8-17</sendtime>
<tocode>回復</tocode>
</dailyreport>
</test>
輸出結果:
節點值:systemMessage
節點值:標題:系統消息
節點值:概要:您 已經三天未填寫日報務
節點值:system
節點值:發送者:系統
節點值:test
節點值:接受者:測試
節點值:狀態:已讀
節點值:內容:
您 已經三天未填寫日報務
節點值:類型:systemMessage
節點值:發送時間:2015-8-17
節點值:回復
[systemMessage, 標題:系統消息, 概要:您 已經三天未填寫日報務, system, 發送者:系統, test, 接受者:測試, 狀態:已讀, 內容:您管理的項目已三天未派發新任務,請注意項目進度, 類型:systemMessage, 發送時間:2015-8-17, 回復]
概要:您 已經三天未填寫日報務