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?

¿Fue útil?

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
scroll top