XML --java学习笔记

本文介绍了XML(可扩展标记语言)的基本概念,包括标签、元素、属性和文件结构。讲解了如何创建XML文件、XML的语法规则,以及XML在系统配置和数据传输中的作用。此外,还详细阐述了使用Dom4j解析XML文件的过程和示例,以及DTD和Schema约束文档的作用。
摘要由CSDN通过智能技术生成

XML(全称EXtensible Markup Language,可扩展标记语言)

  • 本质是一种数据的格式,可以用来存储复杂的数据结构,和数据关系

XML的特点

  • XML中的“<标签名>”称为一个标签或一个元素,一般是成对出现的
  • XML中的标签名可以自己定义(可扩展),但必须要正确的嵌套
  • XML中只能有一个根标签
  • XML中的标签可以有属性
  • 如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成.xml

XML的创建

  • 就是创建一个XML类型的文件,要求文件的后缀必须使用xml,如hello world.xml

IDEA创建XML文件

XML的语法规则

  • XML文件的后缀名为:xml,文档声明必须是第一行
  • XML中可以定义注释信息:<!--注释内容 -->
  • XML中书写”<” 、“&”等,可能会出现冲突,导致报错,此时可以用如下特殊字符替代
  • XML中可以写一个叫CDATA的数据区:<![CDATA[…..内容... ]]>,里面的内容可以随便写

XML的作用和应用场景

  • 本质是一种数据格式,可以存储复杂的数据结构,和数据关系
  • 应用场景:经常用来做为系统的配置文件,或者作为一种特殊的数据结构,在网络中进行传输

解析XML文件

  • 使用程序读取XML文件中的数据
  • 注意:程序员并不需要自己写原始的I0流代码来解析XML,难度较大!也相当繁琐!
  • 其实,有很多开源的,好用的,解析XML的框架,最知名的是:Dom4j(第三方研发的)

使用Dom4]解析出XML文件

需求:使用Dom4]把一个XML文件的数据进行解析
分析:

  1. 下载Dom4j框架,官网下载。
  2. 在项目中创建一个文件夹:lib
  3. 将dom4j-最新版本.jar文件复制到 lib 文件夹
  4. 在jar文件上点右键,选择 Add as Library ->点击OK
  5. 在类中导包使用

DOM4J解析XML文件的思想:文档对象模型

Dom4j解析XML-得到Document对象

  • SAXReader:Dom4j提供的解析器,可以认为是代表整个Dom4j框架

Element提供的方法

代码演示:

xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<!-- 这是一个注释,上面的头部声明必须写在第一行,必须有 -->
<!--根标签只能有一个-->
<users>
    <user id = '1'>
        <name>李白</name>
        <age>33</age>
        <sex>男</sex>
        <password>dhzjtsl</password>
    </user>
    <admin>zeyu</admin>
    <user id = '2'>
        <name>吕布</name>
        <age>25</age>
        <sex>男</sex>
        <password>chanchan</password>
    </user>
    <user id = '3'>
        <name>貂蝉</name>
        <age>18</age>
        <sex>女</sex>
        <password>zilong</password>
    </user>
    <user id = '4'>
        <name>赵云</name>
        <age>23</age>
        <sex>男</sex>
        <password>chanchan</password>
    </user>
</users>

test:

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

import java.util.List;

public class Dom4jTest1 {
    public static void main(String[] args) throws Exception {
        //1、创建一个Dom4J框架提供的解析器对象
        SAXReader saxReader = new SAXReader();

        //2、使用saxReader对象把需要解析的xml文件读成一个Document对象
        Document document = saxReader.read("properties-xml-log\\helloworld.xml");

        //3、从文档对象中解析xml文件的全部数据
        Element root = document.getRootElement();
        System.out.println(root.getName());

        //4、获取根元素下的全部一级子元素
        List<Element> elements = root.elements();
        //List<Element> admin = root.elements("admin"); 获取指定元素名的元素列表
        for (Element element : elements) {
            System.out.println(element.getName());
        }

        //5、获取当前元素下的某个子元素
        Element admin = root.element("admin");
        System.out.println(admin.getText());

        //如果下面有很多子元素user,默认获取第一个
        Element user = root.element("user");
        System.out.println(user.elementText("name"));

        //6、获取元素的属性信息
        //方法一
        System.out.println(user.attributeValue("id"));
        //方法二
        Attribute id = user.attribute("id");
        System.out.println(id.getName());
        System.out.println(id.getValue());

        //7、如何获取全部的文本内容:获取当前元素下的子元素文本值
        System.out.println(user.elementText("name"));
        System.out.println(user.elementTextTrim("age"));    //elementTextTrim 取出文本去除前后空格
        System.out.println(user.elementText("sex"));


    }
}

运行结果:

使用程序把数据写出到XML文件中去不建议用clom4j做

推荐直接把程序里的数据拼接成XML格式,然后用IO流写出去!

代码演示:

package com.zeyu.xml;

import java.io.BufferedWriter;
import java.io.FileWriter;

public class Dom4jTest2 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n");
        sb.append("<student>\r\n");
        sb.append("\t<name>").append("李白").append("</name>\r\n");
        sb.append("\t<sex>").append("男").append("</sex>\r\n");
        sb.append("\t<height>").append("168").append("</height>\r\n");
        sb.append("</student>");

        try (
                BufferedWriter bw = new BufferedWriter(new FileWriter("properties-xml-log\\student.xml"));
                ){
            bw.write(sb.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

运行结果:

约束文档

  • 专门用来限制xml书写格式的文档,比如:限制标签、属性应该怎么写

约束文档分类

  • DTD文档
  • Schema文档

DTD文档

  1. 编写DTD约束文档,后缀必须是.dtd
  2. 在需要编写的XML文件中导入该DTD约束文档
  3. 然后XML文件,就必须按照DTD约束文档指定的格式进行编写,否则报错

schema

  1. 编写schema约束文档,后缀必须是.xsd,具体的形式到代码中观看
  2. 在需要编写的XML文件中导入该schema约束文档
  3. 按照约束内容编写XML文件的标签

  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

A泽予

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

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

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

打赏作者

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

抵扣说明:

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

余额充值