我们的C#程序读取XML文件。 XML文件具有standalone ='no'标头。
DOCTYPE过去看起来像:
<!DOCTYPE foo SYSTEM "silly.dtd">
其中silly.dtd没有就位于文件旁边。
出于各种原因,我将其更改为
<!DOCTYPE foo PUBLIC "-//Some Public Id" "urn:outerspace:silly.dtd">
我没想到会有任何改变,因为以前DTD无法打开为'./silly.dtd',现在无法在'urn:outerspace:silly.dtd'打开它。唯一的区别是目录解析器不必担心系统ID的绝对化。
想象一下,我很惊讶从.NET运行时获得异常,显然是试图在urn:地址处打开DTD。
有些人可以指导我告诉.NET在这种情况下悄悄放弃吗?我知道如何在Java中这样做,但在.NET中我有点迷失。
答案 0 :(得分:1)
实现您自己的XmlResolver来处理此问题(您可以从XmlUrlResolver继承),然后将其插入XmlTextReader和pass the reader to the XmlDocument。
答案 1 :(得分:0)
如果您具有以下属性,则读者不会尝试访问dtd: .ProhibitDtd = FALSE; .XmlResolver = NULL;