XML属性是写在开始标签内的name="value"键值对,用于描述元素的附加特征,如id、category等元数据,必须加引号且不可嵌套,适合标识符和简单修饰,复杂内容应使用子元素。

XML属性就是写在开始标签里的name="value"键值对
它用来描述元素的附加特征,比如中的id和category。这些不是元素内容,而是元数据——类似HTML里的
src和alt。
添加属性必须写在起始标签内,不能放在结束标签或单独存在
XML不支持自闭合标签带属性以外的写法,也不允许把属性拆到多行(除非解析器支持换行空白,但不推荐)。常见错误包括:
- 误写成
——这是子元素,不是属性101 - 写成
——fiction category变成兄弟节点,丢失语义关联 - 用单引号混用:
虽多数解析器容忍,但XML规范要求引号配对且统一,建议全用双引号
属性值必须加引号,且不能包含未转义的、&、"
&、"比如想表达version="1.2 & 3.4",直接写会报错,因为&是非法字符。正确做法是:
- 用实体编码:
version="1.2 & 3.4" - 避免在属性中存复杂结构:像JSON、XML片段、多行文本都不适合放属性里,该用子元素
- 属性名不能以数字或
-开头,不能含空格或冒号(除非是命名空间前缀,如xml:lang)
什么时候该用属性,什么时候该用子元素
没有绝对规则,但有实用倾向:
- 用属性:标识符(
id)、分类(type、status)、简单修饰(lang="zh"、required="true") - 用子元素:可扩展内容(
)、可能含特殊字符或CDATA的数据、需要被单独验证/查询的字段John Doe - 性能上:属性读取略快(DOM中
element.getAttribute("id")比找子节点快),但差别微乎其微;可读性上,深层嵌套属性会让标签变得臃肿难维护
属性不是万能容器,它轻量、扁平、不可嵌套。一旦你发现自己在属性里拼接路径、时间戳、逗号分隔列表,或者想给同一个名字加多个值(比如XML Basics 29.99
tags="web,xml,parsing"),就该停下来想想:这其实更适合子元素或独立结构。









