您的位置:首页 > 其它

应用DOM方式解析XML

2015-02-28 22:34 337 查看
package domTest;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;

import org.w3c.dom.NamedNodeMap;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

public class DomTest {

public static void main(String[] args) {

// TODO Auto-generated method stub

//创建一个DocumentBuilderFactory的对象

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

try {

//创建一个DocumentBuilder对象

DocumentBuilder db = dbf.newDocumentBuilder();

//通过DocumentBuilder对象的parse(String fileName)方法解析XML文件

//利用parse()方法,加载books.xml文件到当前项目下

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

//获取所有books节点的集合

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

//通过booklist的getlength方法,获取booklist方法

System.out.println("一共有 " + booklist.getLength() + "本书!");

//便利每一个book节点

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

System.out.println("=====================开始遍历第" + (i + 1) + "本书的内容=============================");

//通过item(i)方法获取一个book节点,nodelist的索引值从零开始

Node book= booklist.item(i);

//获取book节点所有属性的集合

NamedNodeMap att = book.getAttributes();

System.out.println("第" + (i + 1) + "本书共有" + att.getLength() + "个属性!");

//遍历book的属性

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

//通过att的item的方法,获取book节点的某一个属性

Node attr= att.item(j);

//获取属性名

System.out.print("属性名: " + attr.getNodeName());

//获取属性值

System.out.println("---属性值: " + attr.getNodeValue());

}

//解析book节点的子节点

NodeList childNodes = book.getChildNodes();

//遍历childNodes获取的每个节点名和节点值

System.out.println("第 "+(i + 1)+ "本书有: " + childNodes.getLength() + "子节点");

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

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

//获取element类型节点的节点名

System.out.print("第" + (k + 1) +"个节点的节点名是: "+childNodes.item(k).getNodeName());

//获取element类型节点的值

System.out.println(" --节点值是: " + childNodes.item(k).getTextContent());

//或者使用System.out.println(" --节点值是: " + childNodes.item(k).getFirstChild().getNodeValue());

}

}

System.out.println("=====================结束遍历第" + (i + 1) + "本书的内容=============================");

}

} catch (ParserConfigurationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SAXException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: