XML实体分内部和外部两类,用于表示特殊字符、重复内容或外部资源;内部实体在DTD中直接定义值,外部实体通过SYSTEM或PUBLIC引用外部资源,但现代解析器默认禁用外部实体以防XXE攻击。

XML实体用于在文档中代表特殊字符、重复内容或外部资源,自定义实体分内部实体和外部实体两类。关键在于声明的位置与语法是否符合DTD规范,且需注意现代解析器默认禁用外部实体(XXE)以防范安全风险。
定义内部实体(不访问外部文件)
内部实体直接在DTD中定义值,常用于简化重复文本或插入特殊字符:
- 在文档内部DTD中声明:
]> - 在XML文档中引用:
©right;→ 解析后显示为“© 2024 My Company” - 支持参数实体(仅在DTD内使用),用
%name;引用,声明时加百分号:
声明外部实体(引用外部资源)
外部实体指向本地文件或URL,语法需指定SYSTEM或PUBLIC标识符:
- 引用本地文件:
,然后在文档中用&footer; - 引用远程内容(不推荐):
- PUBLIC实体适合标准化资源:
注意:大多数现代XML解析器(如Java的DocumentBuilder、Python的xml.etree.ElementTree)默认禁用外部实体解析,启用需显式配置,否则会报错或静默忽略。
标签: python java html apache xml解析
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~