当前位置: 首页 > news >正文

xml基本语法

1. xml的基本结构

XML(可扩展标记语言,eXtensible Markup Language)是一种用于存储和传输结构化数据的标记语言,核心特点是自定义标签和严格的语法规则.

一个合法的 XML 文档必须包含文档声明和唯一根元素

<?xml version="1.0" encoding="UTF-8"?>  <!-- 文档声明(可选但推荐) -->
<root>                                  <!-- 唯一根元素(必须) --><child1 attribute="value">内容1</child1>  <!-- 子元素(可嵌套) --><child2>内容2</child2>
</root>

2.XML 根节点的核心规则

XML 文档有且只能有一个根节点,所有其他节点(子节点、孙节点等)都必须是根节点的后代。这是 XML 语法的强制要求,违反会导致文档无法被解析。

  • 错误示例(多个根节点):
    以下文档包含 两个根节点,解析器会报错:
<?xml version="1.0"?>
<users>  <!-- 第一个根节点 --><user>张三</user>
</users>
<products>  <!-- 第二个根节点(错误) --><product>手机</product>
</products>
  • 正确示例(唯一根节点):
    作为唯一根节点,包含所有其他节点:
<?xml version="1.0"?>
<data>  <!-- 唯一根节点 --><users>  <!-- 子节点 --><user>张三</user></users><products>  <!-- 子节点 --><product>手机</product></products>
</data>

3.子节点的设置规则(多层嵌套)

在唯一根节点下,可以设置任意数量的子节点,且子节点可以嵌套自己的子节点(孙节点).

“根节点→子节点→孙节点→…” 的树状结构。
核心规则是:子节点必须完全嵌套在父节点内,不能交叉嵌套。

3.1 根节点 + 多个子节点

根节点下直接包含多个平级子节点(同级子节点可以重名,代表同类数据)。

  • 示例:
    根节点 包含 2 个 子节点:
<?xml version="1.0"?>
<school>  <!-- 根节点 --><!-- 子节点1 --><class id="1">高一(1)班</class><!-- 子节点2(与子节点1平级) --><class id="2">高一(2)班</class>
</school>

3.2 子节点中的子节点(多层嵌套)

子节点可以包含自己的子节点(孙节点),孙节点还可以包含更深层次的节点,层级数量没有限制

  • 示例:
    根节点 → 子节点 → 孙节点 → 曾孙节点
<?xml version="1.0"?>
<school>  <!-- 根节点 --><class id="1">  <!-- 子节点(父节点) --><student>  <!-- 孙节点(子节点的子节点) --><name>张三</name>  <!-- 曾孙节点 --><age>18</age>      <!-- 曾孙节点 --></student><student>  <!-- 另一个孙节点 --><name>李四</name><age>17</age></student></class><class id="2">  <!-- 另一个子节点 --><student><name>王五</name><age>18</age></student></class>
</school>

3.3 子节点的属性与文本

子节点可以包含属性(附加信息)和文本内容,规则与根节点一致:

  • 属性需用引号包裹(单引号或双引号);
  • 文本中的特殊字符(如 <、&)需转义或用 CDATA 段包裹。
<?xml version="1.0"?>
<bookstore>  <!-- 根节点 --><book id="101" category="编程">  <!-- 子节点(含属性) --><title>XML 教程</title>  <!-- 孙节点(文本内容) --><price>59.9</price>      <!-- 孙节点 --><description><![CDATA[包含 < 符号和 & 符号的内容]]>  <!-- CDATA 段处理特殊字符 --></description></book>
</bookstore>

xml 示例

<REFCTRL Ver="1.0.0">
<!-- 关键修复:将自闭合标签`<node/>`改为双标签`<node></node>`,以包含子节点`<sub_node>` -->
<!-- 自闭合标签(无子女点),语法正确 --><para><node name="年龄" value="22" /></para><point><node name="性别" main="1"/><node name="体重" main="50"><sub_node name="小马" main="23"/><sub_node name="小龟" main="34"/></node></point>
</REFCTRL>
http://www.zskr.cn/news/7089.html

相关文章:

  • Day17多维数组
  • D拼数
  • 题解:P11704 [ROIR 2025] 旅行路线
  • 【汇编和指令集 . 第2025 . 9期】发现大牛
  • Day17数组的使用
  • for_switch
  • 记录我见过的神人
  • 虚拟机小结1
  • DOS指令学习
  • edu 106 E(LCS dp + 多源bfs优化)
  • 看 NOI2025 游记记
  • 详细介绍:还在重启应用改 Topic?Spring Boot 动态 Kafka 消费的“终极形态”
  • 安卓 Google Maps 的启用和制作步骤
  • SP3D c# 开发独立的exe
  • java八股文笔记 - 指南
  • NOIP 模拟赛十六
  • 【AT_dp_y】Grid 2 - Harvey
  • CF1413F Roads and Ramen
  • lc1030-距离顺序排列矩阵单元格
  • 合并区间-leetcode
  • 两种判断计算机大小端模式的方法
  • Mapper与Mapper.xml的关系
  • Rocky Linux10.0安装zabbix7.4详细步骤 - 教程
  • 近日C++线上练习结果
  • 日总结 2
  • Ubuntu Linux 云服务器常见安全漏洞修复方法汇总 Apache/OpenSSH/DNS
  • JavaScript学习笔记(1)
  • 多个 root 用户记录,而且有些记录的密码是空的,导致认证混乱。
  • AI智能体开发实战:从提示工程转向上下文工程的完整指南
  • 解码C语言九条语句