2011-06-26 66 views
4

我想將type = array的XML-Document作爲根節點進行解析/序列化。 給定XML結構看起來像這樣:C#中的XmlSerialization - 根元素數組

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

回答

6

試試這個:

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

+1;小點 - 只要值正確初始化,它只需要一個'get'。 –

+1

解決了這個問題。如果是這種情況,請考慮將此標記爲答案。 –