XML(DTD)引用外部实体(将单个XML文件分为多个XML文件)

本文介绍了一种使用外部实体来分割大型XML文件的方法,并通过实例展示了如何在MSXML中实现XML实体的解析过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 XML定义

在本例中应用外部实体主要因为XML文件太大,不容易维护,想按照硬件类型建立几个文件夹,

把整个XML文件物理分割为多个XML文件,但是在解析中仍然解析为一棵树。

<?xml version="1.0" encoding="UTF-8" standalone = "no" ?>

<!DOCTYPE HardwareDef SYSTEM "HardwareDef.dtd" [

<!ENTITY XMLEntity1 SYSTEM "./HardwareDefCommon.xml">

<!ENTITY XMLEntity2 SYSTEM "./Hardware/AA.xml">
<!ENTITY XMLEntity2 SYSTEM "./Hardware/BB.xml">


]>

<HardwareDef >

&XMLEntity1;
&XMLEntity2;
&XMLEntity3;

</HardwareDef >

2 以上解析本人在MSXML中完成。

解析的关键:

获取&XMLEntity1 的节点,通过pFirstEntityNodePtr->get_firstChild(&pNodePtr2)

进而获得在实体对应的文件中的子设备,

待解析完后, 再获取&XMLEntity2的解析,依次类推;

TESTHR(xmlRoot->get_firstChild(&pFirstEntityNodePtr));//xmlRoot为<HardwareDef >节点
pFirstEntityNodePtr->get_nodeName(&NodeName);
TSTRING strNodeName(_com_util::ConvertBSTRToString(NodeName));
if(TSTRING::npos != strNodeName.find("XMLEntity"))
{
TESTHR(pFirstEntityNodePtr->get_firstChild(&pNodePtr2));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值