• 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. 文档声明必须是第一行:
      version:xml的默认版本号码。
      encoding:本xml文件的编码。

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

    符号替代
    小于号 << 表示
    大于号 >> 表示
    引号 "" 表示
    单引号 ’' 表示
    和号 && 表示

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

    解析xml文件

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

     <dependency>
        <groupId>dom4jgroupId>
        <artifactId>dom4jartifactId>
        <version>1.6.1version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    
    <users>
        <user id="1">
            <name>张三name>
            <age>12age>
            <sex>sex>
            <username>zhangsanusername>
            <password>123456password>
        user>
        <user id="2">
            <name>里斯name>
            <age>13age>
            <sex>sex>
            <username>lisiusername>
            <password>1234567890password>
        user>
    users>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    我解析的代码:

    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());
                }
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

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

    如何使用程序把数据写到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("\n");
            str.append("\n");
            str.append("    \n");
            str.append("        12\n");
            str.append("        张三\n");
            str.append("    \n");
            str.append("");
            try (FileWriter fileWriter =
                         new FileWriter("src/main/resources/user2.xml")) {
                fileWriter.write(str.toString());
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

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

  • 相关阅读:
    javascript字符串对象之字符串
    spring5:IOC操作bean管理(创建对象和set属性注入)
    电子书(chm)-加载JS--CS上线
    YOLOv7——论文简述
    Echarts社区新地址
    从头训练RNN语言模型,这样的loss正常吗?
    docker命令
    隐私协议及人脸协议
    zookeeper 常见问题处理
    洛谷 P3834 【模板】可持久化线段树 2(主席树)
  • 原文地址:https://blog.csdn.net/weixin_72979483/article/details/133701738