如何使用.NET控制DTD读取?
我们的一个C#程序读取XML文件。XML文件具有独立的='no'头 DOCTYPE过去看起来像:如何使用.NET控制DTD读取?,.net,xml,dtd,.net,Xml,Dtd,我们的一个C#程序读取XML文件。XML文件具有独立的='no'头 DOCTYPE过去看起来像: <!DOCTYPE foo SYSTEM "silly.dtd"> 其中,silly.dtd不在文件旁边 出于各种原因,我将此更改为 <!DOCTYPE foo PUBLIC "-//Some Public Id" "urn:outerspace:silly.dtd"> 我希望不会有任何更改,因为DTD以前无法以“./silly.DTD”的形式打开,现在也无法在“
<!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中我有点不知所措。实现您自己的来处理这个问题(您可以只从XMLURLSolver继承),然后将它插入和。实现您自己的来处理这个问题(您可以只从XMLURLSolver继承),然后将其插入和。如果您具有以下属性,读卡器将不会尝试访问dtd: .ProhibitDtd=假;
.xmlsolver=null 如果您具有以下属性,读卡器将不会尝试访问dtd: .ProhibitDtd=假;
.xmlsolver=null 我不是这样的。当我在读卡器选项中将解析器设置为null时,它创建了一个默认的解析器。我不是这样做的。当我在读卡器选项中将解析器设置为null时,它就开始创建一个默认解析器。