JAVA解析xml文件(DOM)

DOM方法

实现步骤:

1.创建DocumentBuilderFactory的对象

DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
2.创建DocumentBuilder的对象

DocumentBuilder builder=builderFactory.newDocumentBuilder();
3.通过DocumentBuilder的parse方法加载xml文件,返回一个Document的对象
Document document=builder.parse("books.xml");
4.获取所需要解析的节点的集合    例如获取book节点

NodeList list=document.getElementsByTagName("book");
5.进行遍历这个节点的集合,进行解析属性以及子节点及其内容

一些常用方法如下:

解析属性

  //获取一个book节点
	Node book=list.item(i);
    	//获取book节点属性的集合
 	NamedNodeMap map=book.getAttributes();
   //获取属性
	Node node=map.item(j);
  //获取属性名
String name=node.getNodeName();
//获取属性值
	String value=node.getNodeValue();
解析子节点及其值
//获取book节点的子节点的集合
	NodeList list2=book.getChildNodes();
        for (int j = 0; j < list2.getLength(); j++) {				
 	//判断节点是不是Element属性 因为空格也会算是一个节点
	if (list2.item(j).getNodeType()==Node.ELEMENT_NODE) {
	//获取子节点的name与value
	System.out.print(list2.item(j).getNodeName());
	//由于一个节点的开始与结尾标签中间默认是一个标签  故通过以下方法获取
	System.out.println("-----"+list2.item(j).getFirstChild().getNodeValue());	}					

获取Element节点值的方法还有

list2.item(i).getTextContent()
区别如下:

如果标签下还有一个标签

haha少年阿宾
使用

list2.item(j).getFirstChild().getNodeValue()
方法时返回值为null  因为子节点为Element类型

用第二个节点则返回haha少年阿宾

代码:

//使用DOM方法解析xml
public class Dom {
	public static void main(String[] args) {
		//首先创建DocumentBuilderFactory的对象
		DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
		//创建DocumentBuilder的对象,需要try——catch
		try {
			DocumentBuilder builder=builderFactory.newDocumentBuilder();
		    //通过DocumentBuilder的parse方法加载xml文件,返回一个Document的对象
			Document document=builder.parse("books.xml");
			//获取所有book节点的集合
			NodeList list=document.getElementsByTagName("book");
		    System.out.println("共有"+list.getLength()+"本书");
		    //遍历每一本书
		    for(int i=0;i

xml:



    
          少年阿宾
          2002
          0.01元
          


    
            少妇白洁
            1997
            99元
      










你可能感兴趣的:(Java)