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));
}