2010-06-28 45 views
1

我有一個程序,它讀取和寫入XML使用的XMLReader和XMLWriter的讀取和寫入到一個XML - DTD錯誤

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是prohib 此XML文檔中資訊科技教育。要啓用DTD處理,請將XmlReaderSettings上的 ProhibitDtd屬性 設置爲false,並將設置傳遞到 XmlReader.Create方法 d。 在System.Xml.XmlTextReaderImpl.Throw(例外 E) 在System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(字符串 RES,字符串ARG) 在System.Xml.XmlTextReaderImpl.ParseDoctypeDecl() 在System.Xml.XmlTextReaderImpl。 ParseDocumentContent() 在System.Xml.XmlTextReaderImpl.Read() 在writefile.Main()在C:\ MAIN \ C#六月\ CH9 \ CodeFile1.cs:行

我試過的XmlReader之前加入這個.Create(全路徑)

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

我仍然得到同樣的錯誤,這個程序中真正的問題是什麼?

回答

4

我相信你將需要改變你的讀者創建引用該設置

XmlReader reader = XmlReader.Create(fullpath); 

應該成爲

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

你得到了它,解決了這一問題 – superlazyname 2010-06-28 17:12:07