1. 程式人生 > >XML初識(一)--使用DOM解析XML資料

XML初識(一)--使用DOM解析XML資料

XML是一種資料儲存標準,可以在不同程式語言,不同程式和不同系統之間交換資料。
XML組織資料的形式是以倒排樹的形式來儲存的。即頂部是根節點,下面是子節點。

下面給出一個簡單的XML檔案,然後使用DOM獲取裡面的內容。

books.xml:

這裡寫圖片描述

下面是Demo:

package com.imooc.domlearing;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w
3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class DomParseXml { public static void main(String[] args) { //1.獲取工廠 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { //2.得到DocumentBuilder DocumentBuilder db = factory.newDocumentBuilder
(); //3.根據檔名匹配檔案,得到Document Document document = db.parse("books.xml"); //4.根據標籤名字得到列表 NodeList list = document.getElementsByTagName("book"); System.out.println(list.getLength()); for(int i = 0;i<list.getLength();i++) { System.out
.println("Now,we use "+(i+1)); //5.從list中取出兩本書節點 Node node = list.item(i); //6.得到書的屬性(即我們定義了一個id) NamedNodeMap nnm = node.getAttributes(); System.out.println("第"+i+"本書共有"+nnm.getLength()+"個屬性"); //7.下面是遍歷書屬性的程式碼 for(int j = 0;j<nnm.getLength();j++) { Node attr = nnm.item(j); System.out.println("Attritube name : "+j+" " +attr.getNodeName()); System.out.println("Attritube value: "+j+" "+ attr.getNodeValue()); } //8.得到書的子節點 NodeList childlist = node.getChildNodes(); for(int k = 0;k<childlist.getLength();k++) { Node par = childlist.item(k); //9.這裡要注意,xml節點的排列方式,換行也是一個節點。 if(par.getNodeType()==Node.ELEMENT_NODE) { System.out.println(par.getNodeName()+":"+par.getFirstChild().getNodeValue()); } } System.out.println("第"+i+"本書遍歷完畢!!!"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

下面是執行結果:

2
Now,we use 10本書共有1個屬性
Attritube name : 0   id
Attritube value: 0   1
name:Linux Learning
year:2001
author:Linus
price:$490本書遍歷完畢!!!
Now,we use 21本書共有1個屬性
Attritube name : 0   id
Attritube value: 0   2
name:Git Learning
year:1998
author:Linus
price:$301本書遍歷完畢!!!

注意:我們這裡改變books.xml檔案的字尾名也是可以的,同樣能夠識別出來。不過我們需要保證檔案內部是按照xml格式來組織的。