如何在C#中使用DTD解析XML解析文件
问题描述:
如何在C#中使用我的XML在线或外部DTD参考?如何在C#中使用DTD解析XML解析文件
string fileName = @"C:\\temp\H2009.xml"; XmlDocument xDoc = new XmlDocument(); xDoc.Load(fileName);
我DTD文件ftp.myPartnerCompany.com/Name.ent
在这种.ENT文件,他们定义的实体一样,
<!ENTITY Acaron "Ă"> <!-- latin capital letter A with caron (breve),
U+0102 Latin Extended-A -->
<!ENTITY acaron "ă"> <!-- latin small letter a with caron (breve),
U+0103 Latin Extended-A -->
<!ENTITY Acedil "Ą"> <!-- latin capital letter A with cedilla,
U+0104 Latin Extended-A -->
现在我因为我不知道如何链接xml和.ent文件,所以得到了类似下面的问题。
引用了未声明实体 'Acaron'。线4971,21位
在此先感谢。
编辑
忘记提到我的XML文件,它会像,下面。
<?xml version='1.0' encoding='iso-8859-1'?>
<MA>
<Y07 CLID='C737467' KW='BIRANT' KW2='ESINOGLU'>
<Y0747>B&acaron;RANT ES&acaron;NO&Gcaron;LU</Y0747>
<Y0748>MARK KO KYI Sok Kuuluş Sit
KA&Gcaron;ITHASDNE/İTHAILAND
</Y0748>
<Y07>
<MA>
答
根据您问题中的示例,您指向的.ent文件不是DTD。没有任何ELEMENT/ATTLIST声明,所以结构没有定义。没有DTD,你的XML只能很好地形成(但事实并非如此)。
引用包含所有实体声明的文件,你需要一个DOCTYPE声明来使用参数实体。我不知道C#,所以我不知道你到底怎么会这样编写这个输出是正确的,但这里是你的XML输出应该是什么样子的例子:
<!DOCTYPE MA [
<!ENTITY % ents SYSTEM "name.ent">
%ents;
]>
<MA>
<Y07 CLID="C737467" KW="BIRANT" KW2="ESINOGLU">
<Y0747>B&acaron;RANT ES&acaron;NO&Gcaron;LU</Y0747>
<Y0748>MARK KO KYI Sok Kuuluş Sit KA&Gcaron;ITHASDNE/İTHAILAND </Y0748>
</Y07>
</MA>
希望这有助于。
检查以下内容:http://stackoverflow.com/questions/470313/net-how-to-validate-xml-file-with-dtd-without-doctype-declaration – Polity