¿Cómo establecer el nombre del nodo raíz cuando Xml serializa una matriz?
-
06-07-2019 - |
Pregunta
Tengo una matriz de objetos que quiero serializar como XML. Estos objetos están anotados para configurar los nombres de los nodos XML, pero me preguntaba cómo configurar el nombre del nodo raíz XML.
El código se ve así:
// 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();
El resultado se ve así:
<?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 cambiado de nombre a Place utilizando una anotación XmlElement , pero ¿cómo puedo configurar el nombre del nodo raíz para cambiar el nombre de < strong> 'ArrayOfPlace' nodo?
Solución
Prueba esto:
XmlSerializer ser = new XmlSerializer(
typeof(ListItem[]),
new XmlRootAttribute("CustomRootName"));
Otros consejos
Utilice el atributo XmlRoot .
También encontré una solución yo mismo.
Es posible establecer el nombre del nodo raíz al crear instancias de XmlSerializer. Ver abajo.
XmlSerializer ser = new XmlSerializer(typeof(ListItem[]), new XmlRootAttribute("AllPlaces"));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow