erreur référence d'objet avec Deserialization XML
Hello tout le monde!
Merci d'avance de prendre du temps pour lire ;)
Je suis en train de programmer un WPF en C# avec visual studio.
J'ai un fichier nommé config.xml pour la config par défaut qui me permettra de tracer des courbes plus tard.
Je désérialize mon fichier en un objet de classe Config, et pour l'instant je souhaiterai juste afficher des propriété en texte (nom et IP), le problème étant qu'il me lève une exception comme quoi il ne serait pas définit comme référence à un objet donc il ne veut pas que j’accède aux propriétés.
Les classe XML (Config, Appareil et WSREST) ont été généré grâce à xml2Csharp:
http://xmltocsharp.azurewebsites.net/
Juste a mettre la chaîne XML et il génère les classe. Ensuite il suffit de recevoir une chaîne xml et de la deserializer avec la classe XmlSerializer qui convertie la chaîne en objet.
Le code suivant lit le fichier XML, le deserialize en objet de classe Config qui possède une propriété de classe WSREST et une autre de classe DefaultAppareil:
Code:
1 2 3 4 5 6 7 8 9 10
| public static Config ReadConfig()
{
Config maConfig;
XmlSerializer serializer = new XmlSerializer(typeof(Config));
using (XmlReader reader = XmlReader.Create("..\\..\\config.xml"))
{ maConfig = serializer.Deserialize(reader) as Config; }
return maConfig;
} |
L'erreur est levé par la ligne en gras:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public partial class MainWindow : Window
{
private Config currentConfig = new Config();
public MainWindow()
{
//Lit le fichier config.xml et assigne l'objet à la propriété de la fenêtre WPF
this.currentConfig = Configuration.ReadConfig();
//TextBox sur la fenêtre WPF
this.NomSBoard.Content = this.currentConfig.SBoard.Nom + " (" + this.currentConfig.SBoard.Ip + ")";
InitializeComponent();
} |
Voici les classe:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| [XmlRoot(ElementName = "Config")]
public class Config
{
[XmlElement(ElementName = "WSREST")]
public WSREST WSREST { get; set; }
[XmlElement(ElementName = "defaultSBoard")]
public DefaultSBoard SBoard { get; set; }
}
[XmlRoot(ElementName = "WSREST")]
public class WSREST
{
[XmlAttribute(AttributeName = "ip")]
public string Ip { get; set; }
}
[XmlRoot(ElementName = "S-Board")]
public class DefaultSBoard
{
[XmlElement(ElementName = "Nom")]
public string Nom { get ; set; }
[XmlElement(ElementName = "Courbe")]
public string Courbe { get; set; }
[XmlElement(ElementName = "NbDerniereValeur")]
public string NbDerniereValeur { get; set; }
[XmlAttribute(AttributeName = "ip")]
public string Ip { get; set; }
} |
Dans mon code XmlRoot et XmlElement sont coloré en bleu/vert (coloration des nom de classe) grâce à ce using: using System.Xml.Serialization;
Merci pour votre aide :D