如何自定义XML实体 XML外部实体引用与定义方法

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

如何自定义XML实体 XML外部实体引用与定义方法-第1张图片-佛山资讯网

XML实体用于在文档中代表特殊字符、重复内容或外部资源,自定义实体分内部实体和外部实体两类。关键在于声明的位置与语法是否符合DTD规范,且需注意现代解析器默认禁用外部实体(XXE)以防范安全风险。

定义内部实体(不访问外部文件)

内部实体直接在DTD中定义值,常用于简化重复文本或插入特殊字符:

  • 在文档内部DTD中声明: ]>
  • 在XML文档中引用:&copyright; → 解析后显示为“© 2024 My Company”
  • 支持参数实体(仅在DTD内使用),用%name;引用,声明时加百分号:

声明外部实体(引用外部资源)

外部实体指向本地文件或URL,语法需指定SYSTEM或PUBLIC标识符:

  • 引用本地文件:,然后在文档中用&footer;
  • 引用远程内容(不推荐):
  • PUBLIC实体适合标准化资源:

注意:大多数现代XML解析器(如Java的DocumentBuilder、Python的xml.etree.ElementTree)默认禁用外部实体解析,启用需显式配置,否则会报错或静默忽略。

标签: python java html apache xml解析

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~