Ho una matrice di oggetti che desidero serializzare come XML. Questi oggetti sono annotati per impostare i nomi dei nodi XML, ma mi chiedevo come impostare il nome del nodo radice XML.Come impostare il nome del nodo radice quando XmlSerializing un array?
Il codice simile a questo:
// 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();
L'output è simile al seguente:
<?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 è stato rinominato in Luogo utilizzando un XmlElement annotazione, ma come può Ho impostato il nome del nodo radice per rinominare il nodo "ArrayOfPlace"?
Si noti che è necessario memorizzare in cache il serializzatore per riutilizzarlo in un secondo momento, altrimenti si verificherà una grave perdita di memoria. Vedi [Memory Leak usando StreamReader e XmlSerializer] (https://stackoverflow.com/questions/23897145/memory-leak-using-streamreader-and-xmlserializer/) – dbc