XML标记语言

XML 简介

XML(可扩展标记语言) 是一种标记语言,设计用于存储和传输数据。与 HTML 相比,XML 主要用于描述数据的内容,而不是展示数据的外观。它由万维网联盟(W3C)制定,是一种跨平台、系统无关的语言。

XML的核心特性之一是它的可扩展性,允许用户根据需要创建自定义标签,从而使得XML可以在各种不同的领域应用,如文档存储、数据交换、配置文件等。XML的设计目的是便于人类和机器读取与解析,它被广泛用于网络应用、数据库通信以及各种文件格式。

XML 基本格式

XML 文件是通过一系列的元素来定义的,元素通常通过开始标签和结束标签来包裹数据。以下是 XML 文件的一些基本格式和规则:

1. XML 声明

每个 XML 文档可以包含一个声明,声明版本以及编码方式,通常在文件的第一行。常见形式是:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
2. 根元素

每个 XML 文档必须包含一个且只有一个根元素,它是所有其他元素的容器。例如:

XML 复制代码
<root> <!-- 其他元素 --> </root>

根标签的类型是可以自定义的,XML 并没有限制根标签的具体名称。

3. 元素(标签)

XML 元素是数据的核心组成部分,用开始和结束标签包裹。标签名称是区分大小写的,标签名称可以自定义。如下:

XML 复制代码
<name>John</name>

在这个例子中,<name> 是开始标签,</name> 是结束标签,内容是 John

4. 属性

XML 元素可以包含属性,用于描述元素的额外信息。属性写在开始标签中,格式为 name="value"

XML 复制代码
<person age="30">John</person>

在这个例子中,ageperson 元素的一个属性,值为 30

5. 嵌套元素

元素可以嵌套在其他元素中,这形成了层次结构。如下:

XML 复制代码
<note>
  <to>Alice</to>
  <from>Bob</from>
  <message>Hello!</message>
</note>

这里,<note> 是根元素,包含了 tofrommessage 等子元素。

6. 注释

XML 可以包含注释,用于在文档中添加说明性文字,不会被解析器处理。注释使用 <!-- --> 包裹:

<!-- 这是一个注释 -->

7. 空元素

XML 元素可以是空的,也就是说没有内容。空元素可以使用自闭合标签来表示:

<br/>

8. CDATA 区块

CDATA(Character Data)区块用于包含不能解析为 XML 标签的特殊字符,通常用于嵌入脚本或需要保留的文本内容。CDATA 区块写法如下:

<![CDATA[ 这里的内容不会被解析器当作标签处理 ]]>

XML 文件示例

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Alice</to>
  <from>Bob</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting tomorrow!</body>
</note>

在这个例子中:

  • note 是根元素,包含了几个子元素:tofromheadingbody
  • 每个元素用标签包裹了相应的数据内容。

总结

XML 通过一系列标签和属性来描述数据,格式严谨、结构清晰。它不仅可以在不同系统之间传输数据,还易于扩展和自定义,因此被广泛用于数据存储和通信的场景。

自定义XML:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!--根标签只能有一个
第一行永远都是<?xml version="1.0" encoding="UTF-8"?>
xmL是有约束,约束用于限定xml内就能编写的内容
-->
<jdbk>
    <dev>
        <username></username>
        <password></password>
        <driver></driver>
        <url></url>
    </dev>
    <test>
        <username></username>
        <password></password>
        <driver></driver>
        <url></url>
    </test>
    <formal>

    </formal>
</jdbk>
  • 根标签 <jdbk>:整个文档的主标签,表示一个大系统的配置。
  • <dev>:开发环境的配置信息。
  • <test>:测试环境的配置信息。
  • <formal>:正式环境的配置信息,虽然目前为空,但在实际部署时需要填写。

这三个标签分别用于不同的环境配置,包含了用户名、密码、驱动和URL等信息。这种结构通常用于描述不同环境下的数据库或服务连接配置。、

解析XML:

通过 DOM4J 库,你可以方便地读取 XML 文件中的内容,并对其进行操作,如读取属性、获取子元素、遍历数据等。

java 复制代码
package DOM4J;

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

import java.io.InputStream;
import java.util.List;

public class Test {
    public static void testREad() throws DocumentException {
        // 读取jdbc.xml配置文件,获取document对象
        SAXReader saxReader = new SAXReader();
        //通过类加载器获得指向字节码根路径下的指定文件的输入流
        InputStream resourcesASStream = Test.class.getClassLoader().getResourceAsStream("jdbk.XML");
        // 通过输入流获得配置文件,解析成-个dom对象
        Document document =  saxReader.read(resourcesASStream);
        // 从document对象上获发配置文件中的信息

        // 从document对象上获取根元素
        Element rootElement =  document.getRootElement();


        // 获取元素下的子元素
        List<Element> elements = rootElement.elements();
        for (Element element : elements) {
            System.out.print(element.getName()+" ");

            // 获取属性节点
            Attribute id = element.attribute("id");
            System.out.println(id.getName() + "=" + id.getValue());

            // 继续读取子元素
            List<Element> elements1 = element.elements();
            for (Element element1 : elements1) {
                System.out.println(element1.getName() + " " + element1.getText());
            }
        }
    }

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

输出:

java 复制代码
dev id=001
username 
password 
driver 
url 
test id=002
username 
password 
driver 
url 
formal id=003
相关推荐
黑胡子大叔的小屋43 分钟前
基于springboot的海洋知识服务平台的设计与实现
java·spring boot·毕业设计
ThisIsClark1 小时前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试
雷神乐乐2 小时前
Spring学习(一)——Sping-XML
java·学习·spring
SEO-狼术2 小时前
Oxygen XML Developer Crack
xml
YashanDB2 小时前
【YashanDB知识库】XMLAGG方法的兼容
数据库·yashandb·崖山数据库
独行soc2 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍11基于XML的SQL注入(XML-Based SQL Injection)
数据库·安全·web安全·漏洞挖掘·sql注入·hw·xml注入
小林coding2 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
V+zmm101342 小时前
基于小程序宿舍报修系统的设计与实现ssm+论文源码调试讲解
java·小程序·毕业设计·mvc·ssm
文大。3 小时前
2024年广西职工职业技能大赛-Spring
java·spring·网络安全
风间琉璃""3 小时前
bugkctf 渗透测试1超详细版
数据库·web安全·网络安全·渗透测试·内网·安全工具