Ich habe ein Array von Objekten, die ich als XML serialisieren möchte. Diese Objekte sind mit Anmerkungen versehen, um XML-Knotennamen festzulegen, aber ich habe mich gefragt, wie der Name des XML-Wurzelknotens festgelegt werden soll.Wie wird der Name des Stammknotens beim XmlSerializing eines Arrays festgelegt?
Der Code sieht wie folgt aus:
// create list of items
List<ListItem> list = new List<ListItem>();
list.Add(new ListItem("A1", new Location(1, 2)));
list.Add(new ListItem("A2", new Location(2, 3)));
list.Add(new ListItem("A3", new Location(3, 4)));
list.Add(new ListItem("A4<&xyz>", new Location()));
// serialise
XmlSerializer ser = new XmlSerializer(typeof(ListItem[]));
FileStream os = new FileStream(@"d:\temp\seri.xml", FileMode.Create);
ser.Serialize(os, list.ToArray());
os.Close();
Die Ausgabe sieht wie folgt aus:
<?xml version="1.0"?>
<ArrayOfPlace xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Place>
<Placename>A1</Placename>
<Location>
<Lat>1</Lat>
<Long>2</Long>
</Location>
</Place>
<Place>
...
ListItem zu Platz umbenannt wurde eine XmlElement Anmerkung verwenden, aber wie kann Ich setze den Namen des Wurzelknotens, um den 'ArrayOfPlace' Knoten umzubenennen?
Beachten Sie, dass es notwendig ist, den Serializer zur späteren Wiederverwendung zwischenzuspeichern, da sonst ein schwerwiegender Speicherverlust entsteht. Siehe [Speicherleck mit StreamReader und XmlSerializer] (https://stackoverflow.com/questions/23897145/memory-leak-using-streamreader-and-xmlserializer/) – dbc