2013-09-02 24 views
8

मैं कई तत्वों (आपूर्तिकर्ताओं, ग्राहकों, उत्पाद, आदि) की एक सूची को क्रमानुसार करने की कोशिश कर रहा हूँ एक्सएमएल क्रमबद्धता, सभी एक ही कक्षा (MasterElement)सी # - व्युत्पन्न वर्ग

public class XMLFile 
{ 
    [XmlArray("MasterFiles")] 
    public List<MasterElement> MasterFiles; 
    ... 
} 

[XmlInclude(typeof(Supplier))] 
[XmlInclude(typeof(Customer))] 
public abstract class MasterElement 
{ 
    public MasterElement() 
    { 

    } 
} 

[XmlType(TypeName = "Supplier")] 
public class Supplier: MasterElement 
{ 
    public string SupplierID; 
    public string AccountID; 
} 

[XmlType(TypeName = "Customer")] 
public class Customer: MasterElement 
{ 
    public string CustomerID; 
    public string AccountID; 
    public string CustomerTaxID; 
} 

से पाने अब तक, XML पार्सिंग है, लेकिन वर्तमान आउटपुट

<MasterFiles> 
    <MasterElement xsi:type="Supplier"> 
     <SupplierID>SUP-000001</SupplierID> 
     <AccountID>Unknown</AccountID> 
    </MasterElement> 
    <MasterElement xsi:type="Customer"> 
     <CustomerID>CLI-000001</CustomerID> 
     <AccountID>Unknown</AccountID> 
     <CustomerTaxID>Unknown</CustomerTaxID> 
    </MasterElement> 
</MasterFiles> 

है, लेकिन क्या मैं चाहता हूँ

<MasterFiles> 
    <Supplier> 
     <SupplierID>SUP-000001</SupplierID> 
     <AccountID>Unknown</AccountID> 
    </Supplier> 
    <Customer> 
     <CustomerID>CLI-000001</CustomerID> 
     <AccountID>Unknown</AccountID> 
     <CustomerTaxID>Unknown</CustomerTaxID> 
    </Customer> 
</MasterFiles> 

क्या बजे है मैं गलत यहाँ क्या कर रही? जुड़ा हुआ MSDN से

public class XMLFile 
{ 
    [XmlArray("MasterFiles")] 
    [XmlArrayItem("Supplier", typeof(Supplier))] 
    [XmlArrayItem("Customer", typeof(Customer))] 
    public List<MasterElement> MasterFiles; 
} 

:

उत्तर

7

आप इस के आसपास पाने के लिए उपयोग कर सकते हैं XmlArrayItem

XmlArrayItemAttribute बहुरूपता का समर्थन करता है - दूसरे शब्दों में, यह XmlSerializer ली गई वस्तुओं जोड़ने की अनुमति देता एक सरणी के लिए।

+0

धन्यवाद, यह पूरी तरह से काम किया :) –

संबंधित मुद्दे