C#学习教程:忽略DOCTYPE.dtd,但.dtd文件必须仍然存在它接收的文档具有指定.dtd文件的嵌入式DOCTYPE。我希望在较新的设备连接到我的服务时使用较新的XML架构验证文件。我可以成功忽略.dtd文件中的验证,但.dtd文件必须存在于我的本地硬盘上。我想删除这些过时的文件,找不到办法。我正在处理的示例XML文档:我用来打开文档的数据函数:privatevoidLoadXmlDoc(XmlTextReadermyXmlTextReader){XmlReaderSettingsreaderSettings=newXmlReaderSettings();readerSettings.ValidationType=ValidationType.Schema;readerSettings.Schemas.Add(null,MyGoodSchemaFile);readerSettings.DtdProcessing=DtdProcessing.Ignore;readerSettings.XmlResolver=null;//添加为test.readerSettings.ValidationEventHandler+=ValidationEventHandle;myXmlDocument.XmlResolver=null;//添加为测试。myXmlDocument.Load(myXmlReader);//这里抛出异常!捕获异常:System.IO.FileNotFoundException:找不到文件“c:\windows\system32\inetsrv\SomeMessage.dtd”。文件名:'c:\windows\system32\inetsrvSomeMessage.dtd'atSystem.IO.__Error.WinIOError(Int32errorCode,StringmaybeFullPath)没有使用SomeMessage.dtd文件的内容-它被我忽略了。但是,虚拟文件??“c:\windows\system32\inetsrv\SomeMessage.dtd”必须存在,否则会抛出异常。我在Windows7上运行VisualStudio2010和.Net4.0如何忽略嵌入式.dtd并且不需要在我的计算机上安装虚拟.dtd文件?解决方案是将底层XmlTextReader的XmlResolver设置为null。更改XmlReaderSettings.XmlResolver=null没有帮助,设置XmlDocument.XmlResolver=null也没有帮助这是更正的功能:以上是C#学习教程:忽略DOCTYPE.dtd,但.dtd文件必须仍然存在才能共享完整内容内容,如果对大家有帮助,需要了解更多C#学习教程,希望大家多多关注—privatevoidLoadXmlDoc(XmlTextReadermyXmlTextReader){//下一行是修复!!!myXmlTextReader.XmlResolver=null;//不需要system32inetsrv中的文件XmlReaderSettingsreaderSettings=newXmlReaderSettings();readerSettings.ValidationType=ValidationType.Schema;readerSettings.Schemas.Add(null,MyGoodSchemaFile);readerSettings.DtdProcessing=DtdProcessing.Ignore;readerSettings.XmlResolver=readnull;.ValidationEventHandler+=ValidationEventHandle;XmlReadermyXmlReader=XmlReader.Create(myXmlTextReader,readerSettings);XmlDocumentmyXmlDocument=newXmlDocument();myXmlDocument.XmlResolver=null;//没有帮助myXmlDocument.Load(myXmladReader),//本地磁盘上不需要.dtd}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
