XML基础

XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

<!--XML申明-->
<?xml version="1.0"?>

<!--文档类型定义-->

<!DOCTYPE note [ <!--定义此文档是 note 类型的文档-->
<!ELEMENT note (to,from,heading,body)> <!--定义note元素有四个元素-->
<!ELEMENT to (#PCDATA)> <!--定义to元素为”#PCDATA”类型-->
<!ELEMENT from (#PCDATA)> <!--定义from元素为”#PCDATA”类型-->
<!ELEMENT head (#PCDATA)> <!--定义head元素为”#PCDATA”类型-->
<!ELEMENT body (#PCDATA)> <!--定义body元素为”#PCDATA”类型-->
]>


<!--文档元素-->
<note>
<to>Dave</to>
<from>Tom</from>

<head>Reminder</head>

<body>You are a good man</body>
</note>

大白话解释下

大白话版XML基础讲解


1. XML是啥?

XML全称可扩展标记语言,你可以把它理解成一种“纯文本版的数据收纳盒”。它的核心作用是存储和传输结构化的数据,比如商品信息、用户资料等。举个栗子🌰:

  • HTML(网页语言):负责把数据排版成好看的页面,比如字体颜色、表格布局。
  • XML:只关心数据本身长啥样,比如一个商品的名字、价格、库存量。

📌 关键特点:标签可以自定义(比如 <手机型号>小米13</手机型号>),不像HTML只能用固定标签(如 <p>

1

3

5


2. XML长什么样?

XML文档就像家谱,必须有一个“老祖宗”根标签,其他标签层层嵌套。比如:

xml

<?xml version="1.0" encoding="UTF-8"?>  <!-- 文档声明(告诉电脑这是XML) -->
<超市> <!-- 根标签 -->
<商品 分类="饮料"> <!-- 子标签,带属性 -->
<名称>可乐</名称>
<价格>3.5</价格>
<库存>100</库存>
</商品>
</超市>
  • <超市>
    <商品 分类=”饮料”>
    <名称>可乐</名称>
    <价格>3.5</价格>
    <库存>100</库存>
    </商品>
    </超市>

3. XML的规矩(语法)

3.XML的规矩 (语法)
1.严格大小写:是俩不同的标签,电脑会认错68。
2.不能瞎起名:
)×不能用数字开头(如1<1号商品>
·×不能有空格(如<商品名称>)
·×别用特殊符号(如:或-)
3.躲开特殊字符:比如<要写成&lt;,否则电脑会以为是新标签。
4.注释写法:,不能嵌套。


4. XML能干啥用?

1.

传数据

:比如APP和服务器之间传订单信息,用XML打包数据,双方都能看懂

3

7

2.

当配置文件

:很多软件的设置文件(比如Java的Spring框架)用XML存参数

3

8

3.

小型数据库

:比如存几百本书的信息,方便随时读取

3

4

4.

规范数据格式

:比如电商平台要求所有商家用统一的XML格式上传商品

4

7


5. 举个实际例子

假设你要用XML存学生信息:

xml

<?xml version="1.0" encoding="UTF-8"?>
<班级>
<学生 学号="001">
<姓名>张三</姓名>
<年龄>18</年龄>
<成绩>90</成绩>
</学生>
<学生 学号="002">
<姓名>李四</姓名>
<年龄>19</年龄>
<成绩>85</成绩>
</学生>
</班级>
  • 根标签<班级>
  • 嵌套结构:每个学生信息包裹在 <学生> 里,属性 学号 区分不同学生

XML = 自定义标签 + 结构化数据 + 严格语法。它像一张万能表格,能把杂乱的数据整理得井井有条,方便电脑和人一起看懂。学XML的重点是:标签别写错、属性加引号、结构要清晰

xml语言的格式
 <?xml version="1.0" encoding="UTF-8"?>   //xml的声明  
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file://d:/1.txt" >
]> //DTD部分
<x>&xxe;</x> //xml部分

首先第一句是声明,声明这是一段xml代码,接下来是一个DTD的部分,意思是读取d盘上的1.txt文件。比如我们经常要用到某一组数据,那么每次都引用,肯定是非常不方便的,所以把这组经常用的数据设置成为一个变量,需要的时候直接调用这个变量,通过以上的解释,我们不难看出,xml如果产生漏洞,那肯定就是在这个DTD部分,最后则是xml部分。

一道java题目结合xxe漏洞

CVE-2019-12415

之前刷题网鼎杯碰到的 顺便复习了下xxe(外部实体注入漏洞)