下面给你整理一份详解 XML 中标签与元素使用的系统教程,涵盖概念、语法、类型、嵌套规则、最佳实践以及实战示例。


📘 一、XML 标签与元素的基本概念


1️⃣ 标签(Tag)

  • 定义:标签是 XML 文档中用于标记元素开始和结束的标记符号。
  • 特点
    1. 用尖括号 < > 包围
    2. 开始标签 <element> 与结束标签 </element> 配对
    3. 标签名遵循 XML 命名规则(字母开头,可包含字母、数字、下划线 _、连字符 -

示例

&lt;book>...&lt;/book>


2️⃣ 元素(Element)

  • 定义:元素是 XML 文档的核心结构单元,由开始标签、内容和结束标签组成,可包含属性、文本、子元素或混合内容。
  • 特点
    1. 元素有 标签 表示边界
    2. 可以嵌套其他元素
    3. 可以包含文本或空内容

示例

&lt;book id="b001">
    &lt;title>宇宙简史&lt;/title>
    &lt;author>Stephen Hawking&lt;/author>
&lt;/book>

  • booktitleauthor 都是元素
  • id 是属性,存储附加信息

📘 二、XML 标签与元素语法规则

  1. 开始标签与结束标签必须匹配
&lt;book>内容&lt;/book>  ✅
&lt;book>内容&lt;/books> ❌

  1. 标签区分大小写
&lt;Book>内容&lt;/Book> ❌
&lt;book>内容&lt;/book> ✅

  1. 属性书写在开始标签内
&lt;book id="b001" category="Science">...&lt;/book>

  1. 空元素可以使用自闭合标签
&lt;price currency="USD" />  &lt;!-- 等价于 &lt;price currency="USD">&lt;/price> -->

  1. 元素可以嵌套
&lt;library>
    &lt;book>
        &lt;title>XML指南&lt;/title>
        &lt;author>阿杰&lt;/author>
    &lt;/book>
&lt;/library>

  1. 根元素必须唯一
&lt;library>...&lt;/library>  ✅
&lt;book>...&lt;/book>
&lt;author>...&lt;/author> ❌  # 多根元素错误


📘 三、XML 元素的类型


1️⃣ 简单元素(Simple Element)

  • 定义:只包含文本,不包含子元素或属性
  • 示例
&lt;title>宇宙简史&lt;/title>


2️⃣ 复杂元素(Complex Element)

  • 定义:包含属性、子元素或混合内容
  • 示例
&lt;book id="b001" category="Science">
    &lt;title>宇宙简史&lt;/title>
    &lt;author>Stephen Hawking&lt;/author>
&lt;/book>


3️⃣ 空元素(Empty Element)

  • 定义:不含文本或子元素
  • 写法:自闭合 <element /><element></element>
  • 示例
&lt;price currency="USD" />


📘 四、元素嵌套规则

  1. 元素可以无限嵌套,但必须闭合
  2. 标签顺序需与 DTD/XSD 或约定规则一致
  3. 不允许标签交叉:
&lt;parent>
    &lt;child1>
    &lt;child2>&lt;/child2>
&lt;/child1> ❌ 错误
&lt;/parent>

正确:

&lt;parent>
    &lt;child1>&lt;/child1>
    &lt;child2>&lt;/child2>
&lt;/parent>

  1. 根元素必须唯一,所有其他元素都必须在根元素内部

📘 五、元素内容类型

  1. 文本内容(Character Data)
&lt;title>XML 入门&lt;/title>

  1. 元素嵌套(子元素)
&lt;book>
    &lt;title>XML 入门&lt;/title>
    &lt;author>阿杰&lt;/author>
&lt;/book>

  1. 混合内容(文本 + 子元素)
&lt;paragraph>
    欢迎阅读 &lt;b>XML 教程&lt;/b> ,掌握基础知识。
&lt;/paragraph>

  1. CDATA 区块
&lt;script>&lt;![CDATA[
    alert("Hello, XML!");
]]>&lt;/script>


📘 六、元素访问与操作示例


1️⃣ Java DOM

Element book = (Element) doc.getElementsByTagName("book").item(0);
String title = book.getElementsByTagName("title").item(0).getTextContent();
book.setAttribute("category", "History");


2️⃣ Python lxml

book = tree.find('book')
title = book.find('title').text
book.set('category', 'History')


3️⃣ JavaScript(浏览器)

let book = document.querySelector('book');
let title = book.querySelector('title').textContent;
book.setAttribute('category', 'History');


📘 七、标签与元素最佳实践

  1. 元素命名
    • 使用有意义名称
    • 避免特殊字符
    • 使用小写或驼峰命名统一风格
  2. 标签闭合
    • 必须配对,避免解析错误
  3. 自闭合空元素
    • 提高可读性和简洁性
  4. 元素嵌套
    • 尽量保持结构清晰,避免深度过深
  5. 属性与子元素选择
    • 简单信息用属性
    • 复杂信息用子元素

📘 八、综合示例

&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;library>
    &lt;!-- 图书信息 -->
    &lt;book id="b001" category="Science">
        &lt;title>宇宙简史&lt;/title>
        &lt;author>Stephen Hawking&lt;/author>
        &lt;price currency="USD">68&lt;/price>
    &lt;/book>
    &lt;book id="b002" category="History">
        &lt;title>人类简史&lt;/title>
        &lt;author>Yuval Noah Harari&lt;/author>
        &lt;price currency="USD">45&lt;/price>
    &lt;/book>
&lt;/library>

  • library 是根元素
  • book 是复杂元素,含属性、子元素
  • titleauthorprice 是简单元素
  • 属性存储额外信息,如 idcategorycurrency

📘 九、总结

  1. 标签是元素的标记,用 <name></name> 包围
  2. 元素是 XML 的核心单元,可包含文本、属性、子元素
  3. 元素类型:简单元素、复杂元素、空元素
  4. 元素嵌套必须规范、根元素唯一
  5. 属性用于描述,子元素用于复杂内容
  6. 合理设计标签与元素结构可提高 XML 可读性和可维护性