XML文件详解 (java程序解析XML文件,java程序写XML文件)

XML 的全称是可扩展标记语言(eXtensible Markup Language)

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

使用XML(可扩展标记语言)有以下几个好处:

可读性强:XML使用标记来定义数据,使得数据具有更好的可读性和可维护性。它采用了层次结构的形式,可以清晰地描述数据的结构,易于理解和解释。

跨平台和语言无关性:XML是一种通用的标记语言,不依赖于具体的编程语言或操作系统。这意味着XML文件可以在不同平台和系统上使用,并且可以被各种编程语言解析和处理。

可扩展性:XML具有良好的扩展性,可以根据需要自定义标记和结构。这使得XML非常适合用于描述复杂的数据或配置文件。

数据与显示的分离:使用XML可以将数据与其呈现方式(如HTML、XSL等)进行分离。这样,数据可以独立于其呈现方式进行管理和更新,使得应用程序更加可灵活和可扩展。

数据交换和集成:XML广泛用于数据交换和集成领域。由于XML的普遍性和通用性,可以轻松地在不同系统和应用程序之间传输和共享数据,促进系统间的互操作性。

应用场景:用来作为系统的配置文件,也可以作为在网络中传输的数据格式。

xml的特点:

  1. xml中的<标签名>被称为一个标签或者是一个元素,一般是成对出现的。
  2. xml中的标签名是可以自己定义的。
  3. xml中只能由一个根标签。
  4. xml中的标签可以有属性。
  5. 如果一个文件中存放的是xml格式的数据,那么文件后缀一定是".xml"。
    在这里插入图片描述

xml中的一些语法规则

  1. xml文件后缀必须是xml

  2. 文档声明必须是第一行: <?xml version="1.0" encoding="UTF-8" ?>
    version:xml的默认版本号码。
    encoding:本xml文件的编码。

  3. 在 XML 中,有五个特殊字符需要进行转义(即使用实体引用)才能正确表示:

符号替代
小于号 <&lt; 表示
大于号 >&gt; 表示
引号 "&quot; 表示
单引号 ’&apos; 表示
和号 &&amp; 表示

也可以使用CDATA的数据区:<![CDATA[ 内容 ]] >,使用了它就可以在其中随便写。
在这里插入图片描述
在这里插入图片描述

解析xml文件

在这里插入图片描述
创建mevan项目引入dom4j依赖:

 <dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
</dependency>

dom4j如何解析xml文档:
首先dom4j提供了一个 SAXReader解析器 把整个xml文件解析为一个Document文档,然后在解析为Element:元素(标签),最后解析标签的 Attribute:属性子标签,文本

在这里插入图片描述

  1. 创建一个SAXReader解析对象。
SAXReader saxReader = new SAXReader();

在这里插入图片描述

  1. 使用后SAXReader对象将要读取的xml解析为一个Document文档。
Document document = saxReader.read("src/main/resources/user.xml");
  1. 从文档对象中解析xml的数据。
Element rootElement = document.getRootElement();

在这里插入图片描述

4.使用Element对象提供的方法进行解析数据。
在这里插入图片描述
示范:
这是我的xml文件内容:

<?xml version="1.0" encoding="UTF-8" ?>
<users>
    <user id="1">
        <name>张三</name>
        <age>12</age>
        <sex></sex>
        <username>zhangsan</username>
        <password>123456</password>
    </user>
    <user id="2">
        <name>里斯</name>
        <age>13</age>
        <sex></sex>
        <username>lisi</username>
        <password>1234567890</password>
    </user>
</users>

我解析的代码:

package com.pjh;

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

import java.util.List;

public class test {
    public static void main(String[] args) throws Exception {
        //创建一个SAXReader解析对象。
        SAXReader saxReader = new SAXReader();
        //使用后SAXReader对象将要读取的xml解析为一个Document文档。
        Document document = saxReader.read("src/main/resources/user.xml");
        //从文档对象中解析xml的数据
        Element rootElement = document.getRootElement();
        System.out.println(rootElement.getName());

        List<Element> elements = rootElement.elements();
        for (Element e: elements){
            System.out.println(e.getName());
            System.out.println("id:"+e.attribute("id").getValue());

            List<Element> elements1 = e.elements();
            for (Element e1 : elements1){
                System.out.println(" "+e1.getName() +":"+e1.getTextTrim());
            }
        }
    }
}

打印结果:
在这里插入图片描述

如何使用程序把数据写到xml中去?

在这里插入图片描述
使用字符串拼接直接把数据拼成xml的格式再通过io流写入到xml文档中。
如下代码:

package com.pjh;

import java.io.FileWriter;

public class test2 {
    public static void main(String[] args) {
        StringBuilder str = new StringBuilder();
        str.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
        str.append("<users>\n");
        str.append("    <user id=\"1\">\n");
        str.append("        <age>12</age>\n");
        str.append("        <name>张三</name>\n");
        str.append("    </user>\n");
        str.append("</users>");
        try (FileWriter fileWriter =
                     new FileWriter("src/main/resources/user2.xml")) {
            fileWriter.write(str.toString());
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值