2008-11-24 6 views
10

¿Es posible evitar las etiquetas de propiedad de la lista al serializar?Cómo suprimir la etiqueta XML para la propiedad de la lista

//[Serializable()] - removed, unnecessary 
public class Foo 
{ 
    protected List<FooBar> fooBars = new List<FooBar>(); 
    public virtual List<FooBar> FooBars 
    { 
     get { return fooBars; } 
     set { fooBars = value; } 
    } 
} 

// [Serializable()] - removed, unnecessary 
public class FooBar 
{ 
    public int MyProperty 
    { get; set; } 
} 

números de serie a Foo da (excepto el comentario):

<Foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <FooBars> <!-- Unwanted tag --> 
    <FooBar> 
     <MyProperty>7</MyProperty> 
    </FooBar> 
    <FooBar> 
     <MyProperty>9</MyProperty> 
    </FooBar> 
    </FooBars> 
</Foo> 

salida deseada:

<Foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <FooBar> 
    <MyProperty>7</MyProperty> 
    </FooBar> 
    <FooBar> 
    <MyProperty>9</MyProperty> 
    </FooBar> 

+0

[Serializable] no tiene nada que ver con XML Serialization. – Cheeso

Respuesta

12

Adición:

[System.Xml.Serialization.XmlElement("FooBar")] 
public virtual List<FooBar> FooBars 
{ 
    get { return fooBars; } 
    set { fooBars = value; } 
} 

Resultados en

<FooMain xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http:/ 
/www.w3.org/2001/XMLSchema"> 
    <FooBar> 
    <MyProperty>7</MyProperty> 
    </FooBar> 
    <FooBar> 
    <MyProperty>76</MyProperty> 
    </FooBar> 
    <FooBar> 
    <MyProperty>67</MyProperty> 
    </FooBar> 
</FooMain> 
Cuestiones relacionadas