如何在XML文档内引用其他XML对象实现代码复用
XML 复用公共节点避免冗余代码实现方法
直接用XML原生支持的内部实体引用能力即可,不需要复制粘贴重复代码,所有符合标准的XML解析器都能正常识别处理。
具体实现逻辑
- 先在XML文档开头的DTD(文档类型定义)区块中,把需要重复使用的主节点定义为命名实体
- 在所有需要插入主节点的位置,直接引用对应实体即可,解析器会自动将实体标记替换为你定义的完整节点内容
代码示例
实体定义规则
将需要复用的主节点内容写在<!ENTITY 实体名 '复用内容'>标签中,这段定义需要放在根节点前的<!DOCTYPE 根节点名 [ ]>区块内:
<!DOCTYPE nodes [ <!-- 定义名为masterNode的实体,内容就是要复用的主节点 --> <!ENTITY masterNode ' <node id="master"> <info>information1</info> </node> '> ]>
完整可运行文档
在需要插入主节点的位置写&实体名;即可完成引用,最终文档结构如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nodes [ <!ENTITY masterNode ' <node id="master"> <info>information1</info> </node> '> ]> <nodes> &masterNode; &masterNode; </nodes>
注意事项
- 该方案是XML 1.0规范原生支持的特性,解析后得到的节点结构和手动复制粘贴的效果完全一致
- 后续如果需要修改主节点内容,只需要修改ENTITY定义处的一份代码,所有引用位置会自动同步,不会出现多份代码改漏、内容不一致的问题
- 如果复用的节点内容里包含单引号,把ENTITY定义时包裹内容的单引号换成双引号即可,避免符号冲突
内容的提问来源于stack exchange,提问作者Jack N
相关产品推荐
相关产品推荐

