java讀取XML文件的兩種方式

配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<school>
<grade>
<student zone="shenzhen">
<name>chungsalt</name>
<age>26</age>
<sex>male</sex>
<phone>18587756865</phone>
</student>
<student zone="beijing">
<name>leopard</name>
<age>27</age>
<sex>male</sex>
<phone>13510649364</phone>
</student>
</grade>
</school>

1.使用dom4j進行讀取(邊讀邊解析,比較常用)

public static void parseFile(File file) throws Exception{
SAXReader reader  = new SAXReader();
Document doc = reader.read(file);

Element root = doc.getRootElement();
List secondList = root.elements();

//遍歷根元素的全部子元素: 第二層節點
for (Iterator it = secondList.iterator(); it.hasNext();) {
// 每個節點還是grade
Element grade = (Element) it.next();
// 第三層節點列表
List thirdList = grade.elements();
for (Iterator itt = thirdList.iterator(); itt.hasNext();) {
Element student = (Element) itt.next();
System.out.println("\r\n找到一名程序員. 所屬區域: " + student.attributeValue("zone") + ". ");
//第四層節點列表
List forthList = student.elements();
for (Iterator ittt = forthList.iterator(); ittt .hasNext();) {
Element prop = (Element) ittt.next();
System.out.println(prop.getName() + ":" + prop.getData());
}
System.out.println();
}
}
}



配置文件:

<?xml version="1.0" encoding="gbk"?>
<Accounts>
 <Account type="type1">
  <code>100001</code>
  <pass>123</pass>
  <name>李四</name>
  <money>1000000.00</money>
 </Account>
 <Account type="type2">
  <code>100002</code>
  <pass>123</pass>
  <name>張三</name>
  <money>1000.00</money>
 </Account>
</Accounts>

2.使用最原始的w3c中的dom進行讀取

public static void parseFileByDom(File file) throws Throwable{
DocumentBuilder docBuilder = dbFacotry.newDocumentBuilder();

// 得到一個DOM並返回給document對象
Document doc = docBuilder.parse(file);

//第一個元素,根元素
Element root = doc.getDocumentElement();
System.out.println("根元素:" + root.getNodeName());

// 第二層節點列表
NodeList secondList = root.getChildNodes();
for (int i = 0; i < secondList.getLength(); i++) {
Node secLevNode = secondList.item(i);
if ("Account".equals(secLevNode.getNodeName())) {
System.out.println("\r\n找到一篇賬號. 所屬區域: "
+ secLevNode.getAttributes().getNamedItem("type") .getNodeValue() + ". ");
//第三層節點列表
NodeList thirdList = secLevNode.getChildNodes();
for (int j = 0; j < thirdList.getLength(); j++) {
Node thirdLevNode = thirdList.item(j);
if ("code".equals(thirdLevNode.getNodeName())){ // 輸出code
System.out.println(thirdLevNode.getNodeName() + ":" + thirdLevNode.getTextContent());
}else if ("pass".equals(thirdLevNode.getNodeName())){ // 輸出pass
System.out.println(thirdLevNode.getNodeName() + ":" + thirdLevNode.getTextContent());
}else if ("name".equals(thirdLevNode.getNodeName())){ // 輸出name
System.out.println(thirdLevNode.getNodeName() + ":" + thirdLevNode.getTextContent());
}else if ("money".equals(thirdLevNode.getNodeName())){ // 輸出money
System.out.println(thirdLevNode.getNodeName() + ":" + thirdLevNode.getTextContent());
}
}
}
}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章