2010-06-28 21 views
1

J'ai un programme où il lit et écrit XML en utilisant XMLReader et XMLWriterLecture et écriture à un XML - erreur DTD

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

//content... 

writer.Flush(); 

writer.Close(); 

et mon code

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() 

L'auteur fonctionne très bien, mais quand il arrive à XmlReader reader = XmlReader.Create (fullpath);

il imprime le message d'erreur de type inconnu à deux reprises et se bloque avec l'erreur

Exception non gérée: System.Xml.XmlException: Pour plus de sécurité raisons DTD est Interdisant ité dans ce document XML. Pour activer le traitement DTD, définissez la propriété ProhibitDtd sur XmlReaderSettings sur false et transmettez les paramètres à XmlReader.Create metho d. à System.Xml.XmlTextReaderImpl.Throw (Exception e) à System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo (String res, String arg) à System.Xml.XmlTextReaderImpl.ParseDoctypeDecl() à System.Xml.XmlTextReaderImpl. ParseDocumentContent() à System.Xml.XmlTextReaderImpl.Read() à writefile.Main() dans C: \ Main \ C# Juin \ CH9 \ CodeFile1.cs: ligne

J'ai essayé d'ajouter ceci avant XmlReader .Créer (chemin complet)

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

Je reçois toujours la même erreur, quel est le vrai problème dans ce programme?

Répondre

4

je crois que vous devez changer votre lecteur créer pour référencer les paramètres

XmlReader reader = XmlReader.Create(fullpath); 

devrait devenir

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

vous l'avez, qui a résolu le problème – superlazyname