1

我有一个程序,它使用 XMLReader 和 XMLWriter 读写 XML

 XmlWriter writer =
 XmlWriter.Create(fullpath, settings);

 //content...

 writer.Flush();

 writer.Close();

和我的阅读器代码

XmlReader reader = XmlReader.Create(fullpath);

while (reader.Read())
        {
            switch(reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.WriteLine("Element: " + reader.Name);

                    while(reader.MoveToNextAttribute())
                    {

                        Console.WriteLine("\tAttribute: [" + reader.Name + "] = '" + 
                        reader.Value + "'");
                    }
                    break;

                case XmlNodeType.DocumentType: 
                    Console.WriteLine("Document: " + reader.Value); 
                    break;

                case XmlNodeType.Comment:
                    Console.WriteLine("comment: " + reader.Value);
                    break;

                default: 
                    Console.WriteLine("unknown type, error!");
                    break;
            }
        }

        reader.Close()

作家工作正常,但当它到达 XmlReader reader = XmlReader.Create(fullpath);

它两次打印未知类型错误消息并因错误而崩溃

未处理的异常:System.Xml.XmlException:出于安全原因,此 XML 文档中禁止使用 DTD。要启用 DTD 处理,请将 XmlReaderSettings 上的 ProhibitDtd 属性设置为 false 并将设置传递给 XmlReader.Create 方法。在 System.Xml.XmlTextReaderImpl.Throw(Exception e) 在 System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res, String arg) 在 System.Xml.XmlTextReaderImpl.ParseDoctypeDecl() 在 System.Xml.XmlTextReaderImpl.ParseDocumentContent() 在 System. C:\Main\C#June\CH9\CodeFile1.cs:line 中 writefile.Main() 处的 Xml.XmlTextReaderImpl.Read()

我尝试在 XmlReader.Create(fullpath) 之前添加它

XmlReaderSettings settingsread = new XmlReaderSettings();
settingsread.ProhibitDtd = false;

我仍然得到同样的错误,这个程序的真正问题是什么?

4

1 回答 1

4

我相信您需要更改您的阅读器创建以引用设置

XmlReader reader = XmlReader.Create(fullpath);

应该成为

XmlReader reader = XmlReader.Create(fullpath, settingsread);
于 2010-06-28T17:06:07.600 回答