读取XML文件之DOM官方方法

本文通过一个具体的例子展示了如何使用DOM方法来解析XML文件。从创建解析器到获取XML文件中的元素、属性及文本内容,详细地介绍了整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值