2010-08-01 4 views
1

Je suis en train de sérialiser une liste d'une classe et je ne suis pas satisfait de la sortie XML générée.Comment modifier le nom d'une collection d'une classe personnalisée lors de la sérialisation XML?

[Serializable()] 
public class Foo 
{ 

    [XmlAttribute] 
    public String Property1 { get; set; } 

    public Foo() { } 
} 

public class Foo2 
{ 
    List<Foo> _list = new List<Foo>() 
    { 
     new Foo(){ Property1="hello"} 
    }; 

    // ... 
    // code for serialization 
    string path = "asdasd"; 
    using (FileStream fs = new FileStream(path, FileMode.Create)) 
    { 
    XmlSerializer xs = new XmlSerializer(typeof(List<Foo>)); 
    xs.Serialize(fs, _list); 
    fs.Close(); 
    } 
} 

La sortie se traduira par:

<?xml version="1.0"?> 
<ArrayOfFoo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Foo Property1="hello" /> 
</ArrayOfFoo> 

Où dois-je configurer quel attribut pour modifier le nom de ArrayOfFoo?

Répondre

2

Il suffit d'utiliser le proper constructor:

var xs = new XmlSerializer(typeof(List<Foo>), new XmlRootAttribute("foos")); 

également vous pourriez retirer en toute sécurité l'attribut [Serializable] de votre classe Foo. C'est pour la sérialisation binaire et XmlSerializer ignore.

+0

merci, travaillé – citronas

Questions connexes