在XML文档中,实体(entity)是用来定义可复用内容或替代特殊字符的一种机制。理解XML实体的类型,对于编写合法且易维护的XML文件十分关键。下面我们系统梳理XML中常见的实体类型及其用法。

一、预定义实体
XML规范内置了五个预定义实体,用于替代在XML中有特殊含义的字符,避免解析错误:
- < 表示小于号 <
- > 表示大于号 >
- & 表示和号 &
- " 表示双引号 "
- ' 表示单引号 '
二、字符实体
字符实体分为十进制和十六进制两种,用来引用Unicode字符。格式如下:
<!-- 十进制字符实体 --> A <!-- 表示大写字母 A --> <!-- 十六进制字符实体 --> A <!-- 同样表示大写字母 A -->
三、通用内部实体
在DTD中通过<!ENTITY>声明,内容直接写在文档内部,可在XML主体中通过&名称;引用:
<?xml version="1.0"?> <!DOCTYPE note [ <!ENTITY writer "张三"> <!ENTITY email "user@ipipp.com"> ]> <note> <author>&writer;</author> <contact>&email;</contact> </note>
四、外部实体
外部实体将内容存放在独立文件中,通过SYSTEM关键字引用,有利于内容共享:
<!ENTITY intro SYSTEM "intro.xml">
在XML中使用&intro;即可嵌入intro.xml的文件内容。
五、参数实体
参数实体仅在DTD内部使用,以百分号%声明和引用,常用于模块化DTD:
<!ENTITY % commonAttrs "id ID #IMPLIED class CDATA #IMPLIED"> <!ELEMENT item (%commonAttrs;)>
六、实体类型对比
| 类型 | 声明位置 | 引用方式 | 主要用途 |
|---|---|---|---|
| 预定义实体 | XML规范内置 | <等 | 转义特殊字符 |
| 字符实体 | 无需声明 | &#数字;或&#x十六进制; | 表示任意Unicode字符 |
| 内部实体 | DTD内部 | &名称; | 文档内复用文本 |
| 外部实体 | DTD中SYSTEM引用 | &名称; | 引用外部文件内容 |
| 参数实体 | DTD内部 | %名称; | DTD模块化定义 |
七、小结
掌握XML实体的不同类型,能够让我们在写XML时正确处理特殊符号、拆分复用内容以及构建灵活的DTD结构。实际开发中应根据场景选择对应的实体形式,保障文档的规范性与可读性。
XMLXML_entity实体类型修改时间:2026-07-30 09:30:23