Joa*_*sta 8 c# xml xml-serialization xmlserializer
我正在尝试序列化多个元素的列表(供应商,客户,产品等),所有元素都来自同一个类(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;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,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>
Run Code Online (Sandbox Code Playgroud)
但我想要的是
<MasterFiles>
<Supplier>
<SupplierID>SUP-000001</SupplierID>
<AccountID>Unknown</AccountID>
</Supplier>
<Customer>
<CustomerID>CLI-000001</CustomerID>
<AccountID>Unknown</AccountID>
<CustomerTaxID>Unknown</CustomerTaxID>
</Customer>
</MasterFiles>
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
您可以使用XmlArrayItem来解决这个问题:
public class XMLFile
{
[XmlArray("MasterFiles")]
[XmlArrayItem("Supplier", typeof(Supplier))]
[XmlArrayItem("Customer", typeof(Customer))]
public List<MasterElement> MasterFiles;
}
Run Code Online (Sandbox Code Playgroud)
从链接的MSDN:
XmlArrayItemAttribute支持多态 - 换句话说,它允许XmlSerializer将派生对象添加到数组中.
| 归档时间: |
|
| 查看次数: |
4630 次 |
| 最近记录: |