2008-11-24 7 views
10

Czy można uniknąć znaczników właściwości list podczas serializacji?Jak ukryć tag XML dla właściwości listy

//[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; } 
} 

Szeregowania Foo daje (z wyjątkiem komentarzu):

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

wyjście Poszukiwany

<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] nie ma nic wspólnego z serializacją XML. – Cheeso

Odpowiedz

12

dodania:

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

Wyniki w

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