package com.imooc.learn2;



import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;



import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NamedNodeMap;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;



public class DOMTest {

public static void main(String[] args) {

//创建一个DocumentBuilderFactory对象

DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

try {

//创建一个DocumentBuilder对象

DocumentBuilder builder=dbf.newDocumentBuilder();

//创建一个Document对象

Document root=builder.parse("demo/Books.xml");

//获取所有book的节点

NodeList books=root.getElementsByTagName("book");

//打印数量

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

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

//获取单一的节点

Node a=books.item(i);

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

//获取该节点的所有属性和值

NamedNodeMap c=a.getAttributes();

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

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

//
//通过item方法获取某一个属性

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

//
//获取属性名

//
System.out.println("属性名:"+item.getNodeName());

//
//获取属性值

//
System.out.println("属性值:"+item.getNodeValue());

//
}

//有且知道book节点有且只有一个属性,强制类型转换转换成Element类型

Element bood=(Element) books.item(i);

//使用getAttribute的方法获取属性值

String key=bood.getAttribute("id");

System.out.println("id的属性值为:"+key);

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

}

} catch (Exception e) {

// TODO: handle exception


e.printStackTrace();

}

}



}