当前位置: 首页 > 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.wxhsa.cn/company.asp?id=7102

相关文章:

  • Java25新特性
  • Day17多维数组
  • C++ lambda 匿名函数
  • D拼数
  • 20250917 - WETToken 攻击事件:价格操控产生的套利空间
  • 题解:P6798 「StOI-2」简单的树
  • 题解:P11704 [ROIR 2025] 旅行路线
  • 题解:P11292 【MX-S6-T4】「KDOI-11」彩灯晚会
  • 算法课程第一周作业
  • 实测对比:权威榜单之微信排版Top 5编辑器大揭秘
  • 自建仓库推送到NAS采用 Docker Registry 工作流
  • 【汇编和指令集 . 第2025 . 9期】发现大牛
  • Opencompass避坑日记
  • 随笔 | 农场、小猴子、香蕉
  • Day17数组的使用
  • 完整教程:缓存与数据库一致性的4大坑及终极解决方案
  • Rust的Cargo用法详解 - 详解
  • 串行通信接口标准(TTL、CMOS、RS232、RS422、RS485、CAN等)
  • 攻防世界-IgniteMe - xxx
  • C 语言 之 面向对象(一)
  • for_switch
  • 快速幂
  • 模拟退火
  • 记录我见过的神人
  • DOS指令学习
  • 动态SQL
  • 调教分块代码
  • 100 粉粉福
  • My All Math
  • 【Azure环境】使用ARM Template部署Policy模板时候报错不支持filed函数: The template function field is not valid.