2010-04-15 65 views
3

考慮下面的代碼:如何更改XmlSerialization中的數組元素名稱?

[Serializable] 
public class Human 
{ 
    public string Name { get; set; } 
} 

然後,

 using (MemoryStream ms = new MemoryStream()) 
     { 
      Human[] mans = new Human[] { 
       new Human() { Name = "Moim" } 
        }; 

      XmlSerializer xs = new XmlSerializer(typeof(Human[])); 
      xs.Serialize(ms, mans); 
      string s = System.Text.ASCIIEncoding.ASCII.GetString(ms.ToArray()); 
     } 

在這一點上,變量s將舉行一個值一樣,

<?xml version="1.0"?> 
<ArrayOfHuman xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Human> 
    <Name>Moim</Name> 
    </Human> 
</ArrayOfHuman> 

現在我需要做的是,將xml數組根元素'ArrayOfHuman'更改爲'MyFavoriteArrayRootName'之類的東西。我已經看到了IXmlSerializable接口,但它跳過了根元素名稱。任何人都知道如何實現這個目標?

所有的意見將不勝感激。

此致敬禮。

回答

0

嘗試

XmlSerializer xs = new XmlSerializer(typeof(Human[]), XmlRootAttribute("MyFavoriteArrayRootName")); 
2

關鍵字是XmlRootAttribute前失蹤。

XmlSerializer xs = new XmlSerializer(
    typeof(Human[]), new XmlRootAttribute("MyFavoriteArrayRootName")); 
0

把XmlRoot你的人類是這樣的:

[Serializable] 
[XmlRoot("MyFavoriteArrayRootName")] 
public class Human 
{ 
    public string Name { get; set; } 
}