【Java (一:12-3) xml】

一、

1.xml概述

在这里插入图片描述

2.xml标签规则

在这里插入图片描述

3.xml语法规则

在这里插入图片描述
在这里插入图片描述
xml文件实现

<?xml version="1.0" encoding="UTF-8" ?>
<!-- xml文件用来描述多个学生信息-->
<Students>
    <!--第一个学生信息-->
    <student id="1">
        <name>zhangsan</name>
        <age>18</age>
        <info>学生的信息 &lt; &gt;</info>
        <message><![CDATA[<<<>>>]]]></message>
    </student>
    <!--第二个学生信息-->
    <student id="2">
        <name>lisi</name>
        <age>19</age>
    </student>



</Students>

4.解析xml

4.1常见解析思想 DOM

在这里插入图片描述
在这里插入图片描述

4.2 解析工具DOM4J_进行解析

DOM4J下载地址:https://dom4j.github.io/
在这里插入图片描述



public class Student {
   private String id;
   private String name;
   private int age;

    public Student(String id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Student() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}


import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 利用dom4j解析xml
 */
public class XmlDemo {

    static ArrayList<Student> list = new ArrayList<>();

    public static void main(String[] args) throws DocumentException {


        //1.获取一个解析器 对象
        SAXReader saxReader = new SAXReader();
        //2.利用解析器将xml加载到内存中返回一个文档对象
        Document document = saxReader.read(new File("test\\xml\\student.xml"));
        //3.获取根标签
        Element rootElement = document.getRootElement();
        //4.通过根标签获取student标签
        //elements()可以获取调用者的所有子标签,会把这个子标签放到一个集合中返回
//        List list = rootElement.elements();
//        System.out.println(list.size());
        /**output:
         * 3 : 两个student 1个aaa
         *  <student id="1">
         *         <name>zhangsan</name>
         *         <age>18</age>
         *         <info>学生的信息 &lt; &gt;</info>
         *         <message><![CDATA[<<<>>>]]]></message>
         *     </student>
         *     <!--第二个学生信息-->
         *     <student id="2">
         *         <name>lisi</name>
         *         <age>19</age>
         *     </student>
         *     <aaa></aaa>
         */
        //elements(标签名)可以获取调用者的所有指定的子标签,会把这个子标签放到一个集合中返回
        List<Element> studentElements = rootElement.elements("student");
        for (Element element : studentElements) {
            //element依次表示每一个student标签
            //获取id这个属性
            Attribute attribute = element.attribute("id");
            //获取id的属性值
            String id = attribute.getValue();


            //获取name标签
            Element nameElement = element.element("name");
            //获取name标签体内容
            String name = nameElement.getText();


            Element ageElement = element.element("age");
            String age = ageElement.getText();
//            System.out.println("学号:"+id);
//            System.out.print("姓名:"+name+"\t" +  "年龄:"+age+"\n");

            /**output:
             * 学号:1
             * 姓名:zhangsan	年龄:18
             * 学号:2
             * 姓名:lisi	年龄:19
             */

            //封装
            Student student = new Student(id, name, Integer.parseInt(age));
            list.add(student);
        }
        for (Student student : list) {
            System.out.println(student);
        }
        /** output:
         * Student{id='1', name='zhangsan', age='18'}
         * Student{id='2', name='lisi', age='19'}
         */


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱喝阔落的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值