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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Dans mon code XmlRoot et XmlElement sont coloré en bleu/vert (coloration des nom de classe) grâce à ce using: using System.Xml.Serialization;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
Merci pour votre aide![]()
Partager