JavaWeb —Dom解析

本文深入探讨了DOM解析在JavaWeb中的应用,包括XML文件的读取、元素和属性的获取,以及如何将数据转换为Java对象并写回XML文件。通过具体案例,展示了DOM解析在资源配置和小型数据库管理中的作用。

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

JavaWeb —Dom解析

dom解析:

介绍Xml文件的特点:

1.标签必须成对出现 ,但是命名空间除外<‘stu : dent’><’/stu : dent’>

2.不可以用数字开头,但是可以用字母、下划线开头,标签中不能出现空格 。

3.只能有一个根标签

作用:

1.作为web工程的资源配置文件

2.作为小型数据库

头: <’?xml version=“1.0” encoding=“utf-8”?’>

dom解析的原理:

​ 将xml文档进行封装,将没个标签都封装成标签对象(Node)

​ 步骤:

​ 1.创建dom解析器:

SAXReader read=new SAXReader();

2.创建xml文档对象

Document doc=read.reader(类名.class.getClassLoarder.getResource("xxx.xml"));

dom解析器方法中:reader(url)

url:

​ 1.资源的绝对路径

​ 2.通过反射获取路径 类名.getClassLoader.getResource(“xxx.xml”);

3.获取根标签对象:

Element eleRoot=doc.getRootElement();

4.获取根标签下的子标签

​ ··第一种方法,通过根标签获取第一个子标签

Element elm=eleRoot.element("子标签名称");

​ ··第二种方法,通过更标签获取所有同名子标签,返回一个List集合

List<Node> elmAll=eleRoot.elements("子标签名称");

​ 还可以通过链式编程进一步获取根标签的孙标签:

Element gradson=elm.elemet("孙标签名称")

5.获取标签属性:

​ 第一种方法:直接获取标签属性值,用attributeValue(“属性名称”);

String value=elm.AttributeValue("属性名");

​ 第二种方法:通过属性对象获取

Attribute attribute=elm.attribute("属性名");
String name=attribute.getName();
String value=attribute.getValue();

6.获取获取文本

​ 第一种方式,直接获取文本

String text=elm.getText();

​ 第二种方式,通过父节点

String text1=父节点.elementText("子标签");
String text2=父节点.elementText("子标签");

配置文件:

<?xml version="1.0" encoding="utf-8"?>
<contact_list>
    <contact id="1">
        <name>张三</name>
        <age>20</age>
        <email>1212@qq.com</email>
        <phone>11111</phone>
    </contact>
    <contact id="2">
         <name>李四</name>
        <age>33</age>
        <email>nihaoa@163.com</email>
        <phone>22222</phone>
    </contact>
    <contact id="3">
        <name>王五</name>
        <age>34</age>
        <email>10932vip@q.com</email>
        <phone>33333</phone>

    </contact>
</contact_list>

案例1.将contact.xml保存到ArrayList中

1.首先,准备一个Contact类

public class Contact {
    private String name;
    private String age;
    private String email;
    private String phone;
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "Contact{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", email='" + email + '\'' +
                ", phone='" + phone + '\'' +
                '}';
    }
}
public class Demo4 {
    public static void main(String[] args) throws Exception{
        //1.获取文档对象
        Document doc=new SAXReader().read(Demo4.class.getClassLoader().getResource("contact.xml"));
        //2.获取全部的子标签
        List<Element> list=doc.getRootElement().elements("contact");
        //3.创建一个ArrayList用来存储Contact
        ArrayList<Contact> arrayList=new ArrayList<Contact>();
        Iterator<Element> iterator=list.iterator();
        //将每个标签的值放到Contact中,再将Contact放到ArrayList中
        while(iterator.hasNext()){
            Element element=iterator.next();
            Contact contact=new Contact();
            contact.setName(element.elementText("name"));
            contact.setAge(element.elementText("age"));
            contact.setEmail(element.elementText("email"));
            contact.setPhone(element.elementText("phone"));
            arrayList.add(contact);
        }
        for (Contact i:arrayList){
            System.out.println(i);
        }
    }
}

案例2.将xml文件存放到磁盘中

public class Demo5 {
    public static void main(String[] args) throws Exception{
        //1.获取文档对象
        Document doc=new SAXReader().read(Demo5.class.getClassLoader().getResource("contact.xml"));
        //2.获取输出对流
        OutputStream out=new FileOutputStream("D:/contact.xml");
        //设置输出格式
        OutputFormat format=OutputFormat.createPrettyPrint();
        //设置编码格式
        format.setEncoding("utf-8");
        //XML输出
        XMLWriter writer=new XMLWriter(out);
        writer.write(doc);
    }
}

​ 上面的是完美格式格式输出,下面是紧凑格式

 OutputStream out=new FileOutputStream("D:/contact.xml");
        //设置输出格式
        OutputFormat format=OutputFormat.createCompactFormat();
        //设置编码格式
        format.setEncoding("utf-8");
        //XML输出
        XMLWriter writer=new XMLWriter(out,format);//format必须传入
        writer.write(doc);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值