读取XML文件之DOM官方方法

来源:互联网 发布:安卓手机长截图软件 编辑:程序博客网 时间:2024/06/06 03:55

DOM方法读取XML文件

有这样一个XML文件

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE goods[    <!ELEMENT goods (good+)>    <!ELEMENT good (name,model,inventory)>      <!ATTLIST good id CDATA #REQUIRED>    <!ELEMENT name (#PCDATA)>    <!ELEMENT model (#PCDATA)>    <!ELEMENT inventory (#PCDATA)>]><goods>    <good id="170001">        <name>李宁运动鞋</name>        <model>01</model>        <inventory>50</inventory>    </good>    <good id="170002">        <name>乔丹运动鞋</name>        <model>002</model>        <inventory>78</inventory>    </good>    <good id="170003">        <name>耐克运动鞋</name>        <model>01</model>        <inventory>510</inventory>    </good>    <good id="170004">        <name>老北京布鞋</name>        <model>00</model>        <inventory>200</inventory>    </good></goods>

我们用DOM方法读取这个文件

package com.sxt.lx;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class Lx1 {    public static void main(String[] args) throws Exception {//      1.创建解析器工厂对象        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();//      2.由解析器工厂对象创建解析器对象        DocumentBuilder db = dbf.newDocumentBuilder();//      3.由解析器对象对指定XML文档进行解析,构建相应的DOM树,创建Document对象        Document doc = db.parse("Goods.xml");//      4.以Document对象为起点对DOM树的节点进行增删改查操作。解析DOM树,获取文档内容(元素、属性、文本)//      4.1获取根元素students        NodeList studentsList = doc.getElementsByTagName("goods");        Node studentNode = studentsList.item(0);//      4.2获取students中所有子元素(student)        NodeList studentList = studentNode.getChildNodes();//      4.3遍历student        for (int i = 0; i < studentList.getLength(); i++) {//          4.3.1获取单个节点            Node stuNode = studentList.item(i);//          4.3.2            if (stuNode.getNodeType() == Node.ELEMENT_NODE) {                Element se = (Element) stuNode;                String value = se.getAttribute("id");                           System.out.println("id=" +value);//               4.3.3 获取每个学生的name age score                NodeList nl = stuNode.getChildNodes();                for (int j = 0; j < nl.getLength(); j++) {                    Node nasNode = nl.item(j);                    if (nasNode.getNodeType() == Node.ELEMENT_NODE) {                        Element el = (Element) nasNode;                        String name = el.getNodeName();                        String content = el.getTextContent();                        System.out.println(name + ":" + content);                    }                }            }        }    }}

运行结果:
这里写图片描述


DOM方法需要创建解析器工厂对象再创建解析器对象,指定XML文件,创建 DOM数,再创建Document对象,所以解析起来很麻烦相比较于dom4j方法。


                                                                                                    ——SpringAndI
原创粉丝点击