Pregunta

Tengo una clase que se parece a esto

public class SomeClass
{
    public SomeChildClass[] childArray;
}

que generará XML desde el XMLSerializer de esta manera:

<SomeClass>
   <SomeChildClass>
      ...
   </SomeChildClass>
   <SomeChildClass>
      ...
   </SomeChildClass>
</SomeClass>

Pero quiero que el XML se vea así:

<SomeClass>
   <SomeChildClass index=1>
      ...
   </SomeChildClass>
   <SomeChildClass index=2>
      ...
   </SomeChildClass>
</SomeClass>

Donde el atributo de índice es igual a la posición de los elementos en la matriz.

Podría agregar una propiedad de índice a SomeChildClass con el " XMLAttribute " atributo, pero luego tendría que acordarme de recorrer la matriz y establecer ese valor antes de serializar mi objeto.

¿Hay algún atributo que pueda agregar o alguna otra forma de generar automáticamente el atributo de índice para mí?

¿Fue útil?

Solución

El mejor enfoque sería hacer lo que dijiste y agregar una propiedad a la " SomeChildClass " como este

[XmlAttribute("Index")]
public int Order
{  { get; set; }   }

Entonces, sin embargo, estás agregando estos elementos a tu matriz, asegúrate de que esta propiedad se haya establecido. Luego, cuando serialices ... ¡Presto!

Otros consejos

Es posible que deba considerar la implementación de System.Xml.Serialization.IXmlSerializable para lograr esto.

Puedes verificar la clase XmlAttributeOverrides.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top