2010-08-01 24 views
1

我正在序列化一個類的列表,我對生成的XML輸出不滿意。如何在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(); 
    } 
} 

輸出將導致:

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

我要在哪裏設置哪個屬性改變ArrayOfFoo的名字嗎?

回答

2

只需使用proper constructor

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

此外,你可以安全地從您Foo類別中刪除[Serializable]屬性。這是用於二進制序列化和XmlSerializer忽略。

+0

謝謝,工作 – citronas 2010-08-02 09:50:10

相關問題