首页 > 学院 > 开发设计 > 正文

使用DOM解析XML文档

2019-11-15 00:08:36
字体:
来源:转载
供稿:网友
使用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();        }            }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表