使用DOM解析XML文档

简单介绍一下使用DOM解析XML文档,解析XML文件案例:

<?xml version="1.0" encoding="UTF-8"?>

-<pet>


-<dog id="1">

<姓名>小白</姓名>

<健康值>100</健康值>

<亲密度>0</亲密度>

<年龄>1岁</年龄>

</dog>


-<dog id="2">

<姓名>黄鼠狼</姓名>

<健康值>30</健康值>

<亲密度>90</亲密度>

<年龄>5岁</年龄>

</dog>


-<dog id="3">

<姓名>小东</姓名>

<健康值>90</健康值>

<亲密度>10</亲密度>

<年龄>3岁</年龄>

</dog>

</pet>

使用DOM解析XML文档

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.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

/**
 * 使用DOM解析XML文档
 * @author Administrator
 *
 */
public class DomReadXML {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        //========使用DOM解析XML
        //第一步:建立DOM解析工厂对象实例
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        
        
        try {
            //第二步:从DOM解析工厂中获取解析器
            DocumentBuilder db = dbf.newDocumentBuilder();
            
            //第三步:解析XML文件;载入XML文件得到Document即DOM树
            Document dom = db.parse("file:///D:/Desktop/chapter14/教学演示案例/示例3:使用内部DTD文件/pet2.xml");
            
            //得到所有狗狗节点信息
            NodeList nl = dom.getElementsByTagName("dog");
            System.out.println(nl.getLength());
            //循环取出信息
            for (int i = 0; i < nl.getLength(); i++) {
                
                //得到每只狗狗节点
                Node dog = nl.item(i);
                
                //得到狗狗的属性(即ID)
                Element el = (Element)dog;
                String id = el.getAttribute("id");
                System.out.println("ID:"+id);
                
                //获取狗狗的子节点信息
                for(Node dog_child = dog.getFirstChild();dog_child!=null;dog_child = dog_child.getNextSibling()){
                    
                    //为了防止打印空格(即#text);需要判断当前对象为Node节点对象
                    if(dog_child.getNodeType() == Node.ELEMENT_NODE){
                        String name = dog_child.getNodeName();
                        String value = dog_child.getFirstChild().getNodeValue();
                        System.out.println(name+":"+value);
                    }
                }
                
            }
            
        } 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();
        }
        
    }

}

 

你可能感兴趣的:(dom解析xml)