XmlSerialization в C # - массив корневых элементов - PullRequest
4 голосов
/ 26 июня 2011

Я хотел бы де / сериализовать 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 Ответ

6 голосов
/ 26 июня 2011

Попробуйте это:

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