【发布时间】:2010-06-28 16:53:31
【问题描述】:
我有一个程序,它使用 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:为了安全 禁止 DTD 的原因 在此 XML 文档中进行了编辑。要启用 DTD 处理,请设置 ProhibitDtd 属性 将 XmlReaderSettings 设置为 false 并将设置传递给 XmlReader.Create 方法 d。 在 System.Xml.XmlTextReaderImpl.Throw(异常 e) 在 System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(字符串 水库,字符串参数) 在 System.Xml.XmlTextReaderImpl.ParseDoctypeDecl() 在 System.Xml.XmlTextReaderImpl.ParseDocumentContent() 在 System.Xml.XmlTextReaderImpl.Read() 在 C:\Main\C#June\CH9\CodeFile1.cs:line 中的 writefile.Main() 处
我尝试在 XmlReader.Create(fullpath) 之前添加它
XmlReaderSettings settingsread = new XmlReaderSettings();
settingsread.ProhibitDtd = false;
我仍然遇到同样的错误,这个程序的真正问题是什么?
【问题讨论】: