XML基础

1、xml(可扩展的标记性语言)的作用

  • 用来保存数据,而且这些数据具有自我描述性;
  • 可以作为项目或者模块的配置文件;
  • 可以作为网络传输数据的格式(现在以JSON为主)。
    eg:
<?xml version="1.0" encoding="utf-8" ?>
<!--xml文件的声明,version表示版本,encoding表示编码-->
<students><!--表示多个学生信息-->
    <student id="20181002832"><!--表示一个学生信息,id表示学号-->
        <name>Marry</name><!--表示学生姓名-->
        <sex>girl</sex><!--表示学生姓名性别-->
    </student>
    <student id="20181002833">
        <name>Barry</name>
        <sex>boy</sex>
    </student>
</students>

2、xml的语法

xml文档必须有根元素,就是顶级元素(没有父标签的元素),而且是唯一一个。

2.1 xml注释

和html一样,<!--注释内容-->

2.2 xml元素(标签)

是指从开始标签到结束标签的部分。

2.2.1 命名规则

  • 名称可以包含字母、数字以及其他字符;
  • 名称不能以数字或者标点符号开始;
  • 名称不能包含空格

2.2.2 标签样式

  • 单标签<标签名 属性=“值”……/>
  • 双标签<标签名 属性=“值”……>文本数据或子标签</标签名>

2.2.3 xml属性

xml属性和html属性类似,可以提供元素的额外信息,一个标签可以书写多个属性,每个属性的值必须用引号括起来。

2.2.4 文本区域(CDATA区)

格式:<![CDATA[这里的字符会原样显示,不会被xml解析]]>

3、xml解析技术

可以用w3c组织制定的dom技术来解析。
早期的JDK提供两种xml解析技术DOM和sax(已过时),第三方解析有:jdom(在dom的基础上进行封装)、dom4j(对jdom进行封装),pull(用在Android开发)。
dom4j解析:

  1. 新建Students类:
package com.xuan.pojo;

public class Student {
    private String id;
    private String name;
    private String sex;

    public Student() {
    }

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

    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 String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

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

  1. 导入dom4j的包
    在这里插入图片描述
  2. xml文件见1中xml示例,解析如下:
package com.xuan.pojo;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.util.List;

public class Dom4jTest {

    @Test
    public void test1() throws Exception {
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("src/students.xml");
        System.out.println(document);
    }
    @Test
    public void test2() throws Exception{
        //读取students.xml文件
        SAXReader saxReader = new SAXReader();
        //在Junit测试中,相对路径是从模块名开始算的
        Document document = saxReader.read("src/students.xml");
        //通过Document对象获取根元素students
        Element rootElement = document.getRootElement();
        //通过根元素获取student标签对象,element()和elements()都是通过标签名查找子元素
        List<Element> students = rootElement.elements("student");
        //遍历,处理每个student标签转换为Student类
        for (Element student:students){
            //asXml()把标签对象转换为标签字符串
           Element nameElement = student.element("name");
           //getText()可以获取标签中的文本内容
           String nameText = nameElement.getText();
           //elementText()可以直接获取标签名的文本内容
           String sexText = student.elementText("sex");
           //attributeValue可以获得对应属性值
           String id = student.attributeValue("id");
           //转换输出
           System.out.println(new Student(id,nameText,sexText));
        }
    }
}

  1. 输出:
Student{id='20181002832', name='Marry', sex='girl'}
Student{id='20181002833', name='Barry', sex='boy'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值