2016-06-26 2 views
-1

J'essaye simplement de désérialiser un fichier XML dans une classe.Xml Désérialise l'exception

Ceci est mon fichier xml:

<DirectoryListener inputDirectory="C:\test\" 
        outputDirectory="C:\keyValueXml\" 
        fileExt=".xml"/> 

Et ceci est ma classe (générée par "Collage spécial"):

public class DirectoryListenConfig 
{ 
    [System.SerializableAttribute()] 
    [System.ComponentModel.DesignerCategoryAttribute("code")] 
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] 
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)] 
    public partial class DirectoryListener 
    { 
     private string inputDirectoryField; 
     private string outputDirectoryField; 
     private string fileExtField; 

     [System.Xml.Serialization.XmlAttributeAttribute()] 
     public string inputDirectory 
     { 
      get 
      { 
       return this.inputDirectoryField; 
      } 
      set 
      { 
       this.inputDirectoryField = value; 
      } 
     } 

     [System.Xml.Serialization.XmlAttributeAttribute()] 
     public string outputDirectory 
     { 
      get 
      { 
       return this.outputDirectoryField; 
      } 
      set 
      { 
       this.outputDirectoryField = value; 
      } 
     } 

     [System.Xml.Serialization.XmlAttributeAttribute()] 
     public string fileExt 
     { 
      get 
      { 
       return this.fileExtField; 
      } 
      set 
      { 
       this.fileExtField = value; 
      } 
     } 
    } 
} 

Et j'ai essayé de désérialiser le fichier xml:

string path = "DirectoryConfig.xml"; 

XmlSerializer serializer = new XmlSerializer(typeof(DirectoryListener)); 

StreamReader reader = new StreamReader(path); 
directoryConfig = (DirectoryListener)serializer.Deserialize(reader);//Throw an exception 

Et a obtenu une exception

Une exception non gérée de type 'System.InvalidOperationException' s'est produite dans System.Xml.dll Informations supplémentaires: Une erreur s'est produite dans le document XML (2, 2).).

Quel est le problème? : \

Merci!

Répondre

1

Essayez cette

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Serialization; 
using System.IO; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string path = @"c:\temp\test.xml"; 

      XmlSerializer serializer = new XmlSerializer(typeof(DirectoryListener)); 

      StreamReader reader = new StreamReader(path); 
      DirectoryListener directoryListener = (DirectoryListener)serializer.Deserialize(reader);//Throw an exception 
     } 
    } 


    [XmlRoot("DirectoryListener")] 
    public partial class DirectoryListener 
    { 
     private string inputDirectoryField; 
     private string outputDirectoryField; 
     private string fileExtField; 

     [XmlAttribute("inputDirectory")] 
     public string inputDirectory {get; set; } 

     [XmlAttribute("outputDirectory")] 
     public string outputDirectory { get; set; } 
     [XmlAttribute("fileExt")] 
     public string fileExt { get; set; } 
    } 


} 
+0

Je suis toujours eu une exception, merci! – Evyatar

+0

J'ai testé avec le code ci-dessus et n'a pas eu d'exception. Quelle est l'exception? – jdweng

+0

même erreur (Une exception non gérée de type 'System.InvalidOperationException' s'est produite dans System.Xml.dll Informations supplémentaires: Il existe une erreur dans le document XML (2, 2).) – Evyatar