Tengo una matriz de objetos que deseo serializar como XML. Estos objetos están anotados para establecer nombres de nodo XML, pero me preguntaba cómo configurar el nombre del nodo raíz XML.¿Cómo establecer el nombre del nodo raíz cuando XmlSerializar una matriz?
El código es el siguiente:
// 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();
La salida tiene el siguiente aspecto:
<?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 ha sido renombrado a Lugar utilizando un XmlElement anotación, pero ¿cómo puede ¿Establecí el nombre del nodo raíz para cambiar el nombre del nodo 'ArrayOfPlace'?
Tenga en cuenta que es necesario guardar en la memoria caché el serializador para su reutilización más adelante, de lo contrario, tendrá una pérdida de memoria grave. Consulte [Fuga de memoria con StreamReader y XmlSerializer] (https://stackoverflow.com/questions/23897145/memory-leak-using-streamreader-and-xmlserializer/) – dbc