package DOM方式;
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 TesTDDMParse {
	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
		//(1) 创建一个DocumentBuilderFactory的对象
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
		//(2)创建DocumenyBuilder对象
		DocumentBuilder db=dbf.newDocumentBuilder();	
		//(3)通过DocumentBuilder的parse(. . .)方法得到Document对象
		Document doc=db.parse("book.xml");
		//(4)通过getElementsByTagName(. . .)方法获取到节点的列表
		NodeList bookList=doc.getElementsByTagName("book");
		System.out.println(bookList.getLength());
		//(5)通过for循环遍历,每一个节点
		for(int i=0; i<bookList.getLength();i++) {
			//(6)得到每一个节点的属性和属性值
			Node book=bookList.item(i);
			NamedNodeMap attrs=book.getAttributes(); //得到属性的集合
			//遍历每一个属性
			for(int j=0;j<attrs.getLength();j++){
				//得到每一个属性
				Node id=attrs.item(j);
				System.out.println("属性的名称"+id.getNodeName()+"\t"+id.getNodeValue());
			}
			
		}
		System.out.println("\n每个节点的名称和节点的值");
		//(7)得到每个节点名和节点值
		for(int i=0;i<bookList.getLength();i++){
			//得到每一个book节点
			Node book=bookList.item(i);
			NodeList subNode=book.getChildNodes();
			//使用for循环遍历每一个book的子节点
			for(int j=0;j<subNode.getLength();j++) {
				Node childNode=subNode.item(j);
				//System.out.println(childNode.getNodeName());
				short type=childNode.getNodeType();//获取节点的类型
				if(type==childNode.getNodeType()) {
					System.out.println("节点的名称:"+childNode.getNodeName()+"\t"+childNode.getTextContent());
				}
				
			}
		}
	}
}
这是books
<?xml version="1.0" encoding="UTF-8"?>
<books>
	<book id="1001">
		<name>Java开发</name>
		<author>张小三</author>
		<price>98.5</price>
	</book>
	<book id="1002">
		<name>李四</name>
		<author>Java</author>
		<price>99.2</price>
	</book>
</books>
这是错误
Exception in thread "main" java.io.FileNotFoundException: D:\java\第二阶段\XML技术\books.xml (系统找不到指定的文件。)
	at java.base/java.io.FileInputStream.open0(Native Method)
	at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:155)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:110)
	at java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86)
	at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:184)
	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:654)
	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:150)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:860)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
	at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:246)
	at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
	at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:178)
	at DOM方式.TesTDDMParse.main(TesTDDMParse.java:25)
