Deserialize mit C# (mehrere Knoten)
Karsten
- xml
Guten Tag,
kann mir hier jemand sagen, wo ich gute Tutorials finde, wo erläutert wird, wie man mit C# XML-Files deseralisieren kann?
Ich möchte gerne als Objekt auf die einzelnen Werte eines Knotens zugreifen.
Meine XML Datei ist folgendermaßen aufgebaut...
<?xml ...?>
<Data>
<ORTE>
<NAME>...</NAME>
....
</ORTE>
<ORTE>
<NAME>...</NAME>
....
</ORTE>
<ORTE>
<NAME>...</NAME>
....
</ORTE>
...
<PERSON>
<NAME>...</NAME>
...
</PERSON>
<PERSON>
<NAME>...</NAME>
...
</PERSON>
<PERSON>
<NAME>...</NAME>
...
</PERSON>
...
usw.
</Data>
Jetzt möchte ich die einzelnen Blöcke (ORTE, PERSON) in einer jeweils dazugehörden Collection speichern, so dass dann dort jeweils die Namen und alles weitere gesammelt werden.
Kann mir jemand einen Tipp geben?
Gruß Karsten
Hallo,
Überigens, Hashtables können je nach .Net Framework nicht automatisch Xml-serialisiert werden.
[XmlRoot("Data")]
class Data
{
[XmlArrayItem("ORTE")]
public Ort[] Orte;
[XmlArrayItem("PERSON")]
public Ort[] Orte;
// .. anderes zeugs
}
class Ort
{
[XmlElement]
public string NAME;
}
class Person
{
[XmlElement]
public string NAME;
}
using System.Xml.Serialization;
using System.IO;
using System.Text;
class Worker
{
static void Main()
{
Data yourDataObject = new Data();
// ...
XmlSerializer s = new XmlSerializer(typeof(Data));
StringBuilder sb = new StringBuilder();
s.Serialize(new StringWriter(sb), yourDataObject);
string serializedData = sb.ToString();
}
Ungeprüft, frei nach Dr. Blume.
Genauso wie es eine Serialize() Methode gibt, gibt es auch das Gegenteil. Wenn du dir die Arbeit mit der Klassendefinition sparen möchtest, verwendest du das Utility xsd.exe aus dem .Net SDK. Es generiert dir C# Code (Klassen und Members) anhand von XML oder XSD Dateien. (in beide Richtungen).
Ciao, Frank