天天看點

java dom 解析xml 例子,DOM解析XML案例Demo(一)

一、Java中操作DOM中常用的類

Node

資料類型基類

Element

最常用的類

Attr

Element的屬性

Text

Element or Attr的内容

Document

代表整個XML文檔,代表DOM tree

二、xml檔案

冰與火之歌

張三

99

葫蘆娃

99

1993

三、Dom解析XML案例Demo

package com.da.dom;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

public class DomTest {

public static void main(String[] args) {

//建立一個DocumentBuilderFactory對象

DocumentBuilderFactory documentBuilder = DocumentBuilderFactory.newInstance();

try {

//建立DocumentBuilder對象

DocumentBuilder db = documentBuilder.newDocumentBuilder();

//通過DocumentBuilder中的parse方法加載book。xml檔案到目前項目下

Document document = db.parse("books.xml");

//擷取所有book節點的集合

NodeList nodeList = document.getElementsByTagName("book");

//周遊每個book節點

for (int i = 0; i < nodeList.getLength(); i++) {

System.out.println("==========第"+(i+1)+"本==========");

//Node book = nodeList.item(i);

//NamedNodeMap attributes = book.getAttributes();

不知道目前節點下有多少參數屬性值

//for (int j = 0; j < attributes.getLength(); j++) {

//Node item = attributes.item(j);

//System.out.print("擷取屬性名:"+item.getNodeName());

//System.out.println("擷取屬性值:"+item.getNodeValue());

//}

//确切目前參數下有多少參數屬性值

Element element = (Element) nodeList.item(i);

System.out.println("id值:"+element.getAttribute("id"));

//擷取book下面的子節點

NodeList childNodes = nodeList.item(i).getChildNodes();

for (int j = 0; j < childNodes.getLength(); j++) {

if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) {

System.out.print(childNodes.item(j).getNodeName()+":");

System.out.println(childNodes.item(j).getTextContent());

};

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}