DOM操作XML的步骤.

DOM 解析 XML 的步骤

1) 创建一个 DocumentBuilderFactory 的对象

2) 创建一个 DocumentBuilder 对象

3) 通过DocumentBuilder的parse(...)方法得到Document对象

4) 通过 getElementsByTagName(...)方法获取到节点的列表

5) 通过 for 循环遍历每一个节点   

6) 得到每个节点的属性和属性值

7) 得到每个节点的节点名和节点值 

-------------------这里是演示代码

package ParseXML;

import java.io.IOException;

import javax.swing.event.ChangeListener;
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;

/**
 * 使用DOM解析XML文档
 * @author 小王同学
 *
 */
public class TestDOM {
	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
		//1.创建一个DocumentBuilderFactory对象
		DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
		//2.创建一个DocumentBuilder对象
		DocumentBuilder db =dbf.newDocumentBuilder();
		//3.通过DocumentBuilder的parse()方法得到Document对象
		Document doc = db.parse("book.xml");//这里就得到了xml文档
		//4.通过getElementsByTagName()方法获取到节点的列表
		NodeList bookList= doc.getElementsByTagName("book");//获取books节点下的所有节点
		System.out.println(bookList.getLength());
		//5.通过for循环遍历每一个站点
		for(int i=0;i<bookList.getLength();i++){
		//6.得到每一个节点的属性和属性值                              这里得到的是所有的book节点
			Node book =bookList.item(i);//获取节点
			NamedNodeMap attrs=  book.getAttributes();     //获取节点的属性的值
			for(int j=0;j<attrs.getLength();j++){
				Node node= attrs.item(j);
				System.out.println("节点的名称为:"+node.getNodeName()+"\t节点的属性值为:"+node.getNodeValue());
			}
		}
		//7.得到每个节点的节点名和个节点值
		for(int i=0;i<bookList.getLength();i++){//得到每一个book节点.
			Node book= bookList.item(i);
			NodeList bookchilds= book.getChildNodes();
			for(int j=0;j<bookchilds.getLength();j++){
				Node child= bookchilds.item(j);
				int type= child.getNodeType();//获取节点的类型.
				if(type ==child.ELEMENT_NODE)//判断是否为元素节点.
					System.out.println(child.getNodeName()+"\t"+child.getTextContent());
				
				
				 
			}
		}
		
	}
}

  -----------------------这里是运行的结果.

 

posted @ 2019-07-25 15:59  努力学习的小王。  阅读(116)  评论(0编辑  收藏  举报