如何用.NET控制DTD读取?

时间:2009-12-09 22:18:35

标签: .net xml dtd

我们的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中我有点迷失。

2 个答案:

答案 0 :(得分:1)

实现您自己的XmlResolver来处理此问题(您可以从XmlUrlResolver继承),然后将其插入XmlTextReaderpass the reader to the XmlDocument

答案 1 :(得分:0)

如果您具有以下属性,则读者不会尝试访问dtd: .ProhibitDtd = FALSE; .XmlResolver = NULL;