XmlSerializer - Attribute
-
Hallo ,
ich speichere/lade eine Liste von Elementen mit folgenden Code
[XmlArray("Spalten_Array")] [XmlArrayItem(ElementName = "Spalten_Name", Type = typeof(string))] public ArrayList ColName2 { get { return mColName2; } set { mColName2 = value; } }
wenn diese Elemente nun noch Attribute hätten, wie könnte ich diese auslesen
bzw laden/speichern.
-
Dann müßtest du bei "type=typeof(...)" den entsprechenden Datentyp (Klasse) angeben und in der Klasse dann die weiteren Attribute definieren.
-
hey danke für die Antwort
ich hab jetzt folgendesclass cSpaltenName_name { [XmlElement ("Spalten_Name")] public string mName; [XmlAttribute ("test")] public string mAttribute; } ... [XmlArray("Spalten_Array")] [XmlArrayItem(Type = typeof(cSpaltenName))] public cSpaltenName[] SpaltenTest; ...
ich vermute mal das was an der Struktur der xml nicht korrekt ist
<Spalten_Array> <Spalten_Name test="true">intposition</Spalten_Name> <Spalten_Name test="false">quantity</Spalten_Name> <Spalten_Name test="false">unit</Spalten_Name> <Spalten_Name test="false">articletext</Spalten_Name> </Spalten_Array>
mfg
-
Und was ist jetzt deine Frage?
Kriegst du Fehler beim Einlesen der XML-Datei?
Dann erzeuge doch einfach im Programm ein Array und speichere es als XML-Datei. Dann siehst du ja, wie das Format aussehen muß (bzw. ob du noch Änderungen bei deinen Attributen machen mußt).
Ich nehme mal an, daß dein Klassenname bei deinem eigenen Code korrekt ist (hier hast du ja "class cSpaltenName_name" statt "class cSpaltenName" geschrieben).
-
oh,habe den Fehler vergessen!
Also der Deserialize hatte mir immer folgende Meldung geworfen:
"Fehler beim Reflektieren des Typs"das lag wohl daran dass ich mich an das Beispiel aus den openbook von
Galileo gehalten hatte. Da hatte die Xml-Datei mit dem Array folgende Struktur :<Array> <objName> <EigenSchaft1></Eigenschaft1> <EigenSchaft2></Eigenschaft2> <EigenSchaft2></Eigenschaft2> </objName> <objName> <EigenSchaft1></Eigenschaft1> <EigenSchaft2></Eigenschaft2> <EigenSchaft2></Eigenschaft2> </objName> </array>
Bei mir fehlte aber die <objName> in der Hierarchie und da bin ich bissel durcheinander gekommen
Ich hab mir jetzt so geholfen :... [XmlArray("Spalten_Array")] [XmlArrayItem("Spalten_Name", Type = typeof(cRowName))] ... ///und in der Klasse für die Spalten ... [XmlText] public string Name... ... [XmlAttribute("format")] public bool Format... ...
ich weiß nicht ob man besser eine Schema Datei definiert hätte das somit vielleicht der XmlSerializer weiß, dass da keine Ebene darunter ist...
aber stecke ich einfach mal nicht richtig drin in dem ganzen xml gedönse.
Aber ich dank dir für deine hilf
mfg