C#中的Xml序列化 - 根元素数组

时间:2011-06-26 13:37:50

标签: c# .net xml xml-serialization

我想使用type = array作为根节点来序列化XML文档。 给定的xml结构如下所示:

<?xml version="1.0" encoding="UTF-8"?>
    <parties type="array">
        <party type="Person">
            <id>1</id>
            <lastname>Smith</lastname>
            <firstname>Peter</firstname>
            ...
        </party>
        <party type="Person">
            <id>2</id>
            <lastname>Smith</lastname>
            <firstname>Sarah</firstname>
            ...
        </party>
    <parties type="array">

C#代码如下所示:

[XmlRootAttribute("parties", Namespace = "", IsNullable = false)]       
public class Parties
{
    private ArrayList contacts = new ArrayList();


    public Parties()
    {

    }


    [XmlArray("parties"), XmlArrayItem("party", typeof(Person))]
    public ArrayList Contacts
    {
        get { return contacts; }
        set { contacts = value; }
    }
}

生成的xml输出为:

<?xml version="1.0" encoding="utf-8"?>
    <parties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <parties>
            <party>
                <id>0</id>
                <lastname>Smith</last-name>
                <firstname>Peter</first-name>
            </party>
        </parties>
    </parties>

问题是我现在有2个标签。 如何为根元素指定数组类型?任何想法如何修复它而不改变给定的XML模式?

1 个答案:

答案 0 :(得分:6)

试试这个:

[XmlElement("party")]
public ArrayList Contacts
{
    get { return contacts; }
    set { contacts = value; }
}