开发者

How to change the Array Element names in XmlSerialization?

Consider the following code:

[Serializable]
public class Human
{
    publi开发者_开发知识库c string Name { get; set; }
}

Then,

        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());
        }

At this point, the variable s will hold a value like,

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

Now all I need to do is, changing the xml array root element 'ArrayOfHuman' to something like 'MyFavoriteArrayRootName'. I have seen the IXmlSerializable interface but, that skips the root element name. Anybody has got any idea how to achieve this?

All comments will be greatly appreciated.

Best regards.


new keyword was missing before XmlRootAttribute.

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


try

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


Put the XmlRoot on your Human class like this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜