【问题标题】:Reading and writing to an XML - DTD error读取和写入 XML - DTD 错误
【发布时间】: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;

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

【问题讨论】:

    标签: c# xml dtd xmlreader


    【解决方案1】:

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

    XmlReader reader = XmlReader.Create(fullpath);
    

    应该变成

    XmlReader reader = XmlReader.Create(fullpath, settingsread);
    

    【讨论】:

    • 你明白了,解决了问题
    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    相关资源
    最近更新 更多