C# 无法使用XMLSerializer反序列化子节点中的元素列表
我有以下模式(部分已发布):C# 无法使用XMLSerializer反序列化子节点中的元素列表,c#,xmlserializer,C#,Xmlserializer,我有以下模式(部分已发布): 现在,我使用XSD2代码生成了以下类(只显示了其中的一部分): 名称空间查询yrsp { 使用制度; 使用系统诊断; 使用System.Xml.Serialization; 使用系统集合; 使用System.Xml.Schema; 使用系统组件模型; 使用System.Collections.Generic; 公众部分班级反应 { 私有字符串服务字段; 私有字符串操作字段; 私有字符串状态字段; 专用标题字段; 私有消息字段; 公众回应( { this.mESS
现在,我使用XSD2代码生成了以下类(只显示了其中的一部分):
名称空间查询yrsp
{
使用制度;
使用系统诊断;
使用System.Xml.Serialization;
使用系统集合;
使用System.Xml.Schema;
使用系统组件模型;
使用System.Collections.Generic;
公众部分班级反应
{
私有字符串服务字段;
私有字符串操作字段;
私有字符串状态字段;
专用标题字段;
私有消息字段;
公众回应(
{
this.mESSAGEField=新消息();
this.hEADERField=新标题();
}
公共字符串服务
{
得到
{
返回此.sERVICEField;
}
设置
{
this.sERVICEField=值;
}
}
公共字符串操作
{
得到
{
返回此.aCTIONField;
}
设置
{
this.aCTIONField=值;
}
}
公共字符串状态
{
得到
{
返回此.status字段;
}
设置
{
this.sTATUSField=值;
}
}
公共标头
{
得到
{
返回这个.hEADERField;
}
设置
{
this.hEADERField=值;
}
}
公共信息
{
得到
{
返回此.mESSAGEField;
}
设置
{
this.mESSAGEField=值;
}
}
}
公共部分类头
{
私有字符串成员_IDField;
私有字符串用户_IDField;
私有字符串rUN_NOField;
私有字符串tOT_ITEMSField;
私有字符串eRR_ITEMSField;
公共字符串成员\u ID
{
得到
{
返回此.mEMBER_IDField;
}
设置
{
this.mEMBER_IDField=值;
}
}
公共字符串用户ID
{
得到
{
返回此.uSER_IDField;
}
设置
{
this.uSER_IDField=值;
}
}
公共字符串运行号
{
得到
{
返回此.rUN\u NOField;
}
设置
{
this.rUN_NOField=值;
}
}
公共字符串总计项
{
得到
{
返回此.tOT_ITEMSField;
}
设置
{
this.tOT_ITEMSField=值;
}
}
公共字符串错误项
{
得到
{
返回this.eRR_ITEMSField;
}
设置
{
this.eRR_ITEMSField=值;
}
}
}
公共部分类消息
{
私有列表项字段;
公共信息()
{
this.itemsField=新列表();
}
公共清单项目
{
得到
{
返回此.itemsField;
}
设置
{
this.itemsField=值;
}
}
}
公共部分类项目
{
私有字符串查询\u REFERENCEField;
私有列表项字段;
私有字符串字段;
公共项目()
{
this.itemsField=新列表();
}
公众查询及参考
{
得到
{
返回此.inquiry\u REFERENCEField;
}
设置
{
this.u REFERENCEField=值;
}
}
公共清单项目
{
得到
{
返回此.itemsField;
}
设置
{
this.itemsField=值;
}
}
公共字符串序列
{
得到
{
返回此.seqField;
}
设置
{
this.seqField=值;
}
}
}
}
以下是我尝试反序列化的XML:
<RESPONSE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="EnquiryRsp.xsd">
<SERVICE>ENQUIRY</SERVICE>
<ACTION>A_SC</ACTION>
<STATUS>OK</STATUS>
<HEADER>
<MEMBER_ID>XXX</MEMBER_ID>
<USER_ID>XXXXX</USER_ID>
<RUN_NO>1</RUN_NO>
<TOT_ITEMS>1</TOT_ITEMS>
<ERR_ITEMS/>
</HEADER>
<MESSAGE>
<ITEM>
<ENQUIRY_REFERENCE>FOS000279511111UKU</ENQUIRY_REFERENCE>
<RSP_REPORT>
<ENQUIRY_TYPE>RV</ENQUIRY_TYPE>
<REPORT_DATE>26/12/2007</REPORT_DATE>
<ENQUIRY_NO>17248697</ENQUIRY_NO>
<PRODUCT_TYPE>PLN</PRODUCT_TYPE>
<NO_OF_APPLICANTS>1</NO_OF_APPLICANTS>
<ACCOUNT_TYPE>S</ACCOUNT_TYPE>
<ENQUIRY_REFERENCE>FOS000279511111UKU</ENQUIRY_REFERENCE>
<AMOUNT>0.00</AMOUNT>
<MBR_TYPE>FULL</MBR_TYPE>
<MBR_STS>ACTIV</MBR_STS>
<CONSUMER>
</CONSUMER>
<DISCLAIMER>
<DI_TEXT></DI_TEXT>
<DI_TEXT_AR lang="ar"></DI_TEXT_AR>
</DISCLAIMER>
</RSP_REPORT>
</ITEM>
</MESSAGE>
</RESPONSE>
询问
理学士
好啊
XXX
XXXXX
1.
1.
FOS000279511111UKU
房车
26/12/2007
17248697
印尼国家电力公司
1.
s
FOS000279511111UKU
0
满满的
活动
我无法反序列化邮件中的项目列表。什么时候
namespace EnquiryRsp
{
using System;
using System.Diagnostics;
using System.Xml.Serialization;
using System.Collections;
using System.Xml.Schema;
using System.ComponentModel;
using System.Collections.Generic;
public partial class RESPONSE
{
private string sERVICEField;
private string aCTIONField;
private string sTATUSField;
private HEADER hEADERField;
private MESSAGE mESSAGEField;
public RESPONSE()
{
this.mESSAGEField = new MESSAGE();
this.hEADERField = new HEADER();
}
public string SERVICE
{
get
{
return this.sERVICEField;
}
set
{
this.sERVICEField = value;
}
}
public string ACTION
{
get
{
return this.aCTIONField;
}
set
{
this.aCTIONField = value;
}
}
public string STATUS
{
get
{
return this.sTATUSField;
}
set
{
this.sTATUSField = value;
}
}
public HEADER HEADER
{
get
{
return this.hEADERField;
}
set
{
this.hEADERField = value;
}
}
public MESSAGE MESSAGE
{
get
{
return this.mESSAGEField;
}
set
{
this.mESSAGEField = value;
}
}
}
public partial class HEADER
{
private string mEMBER_IDField;
private string uSER_IDField;
private string rUN_NOField;
private string tOT_ITEMSField;
private string eRR_ITEMSField;
public string MEMBER_ID
{
get
{
return this.mEMBER_IDField;
}
set
{
this.mEMBER_IDField = value;
}
}
public string USER_ID
{
get
{
return this.uSER_IDField;
}
set
{
this.uSER_IDField = value;
}
}
public string RUN_NO
{
get
{
return this.rUN_NOField;
}
set
{
this.rUN_NOField = value;
}
}
public string TOT_ITEMS
{
get
{
return this.tOT_ITEMSField;
}
set
{
this.tOT_ITEMSField = value;
}
}
public string ERR_ITEMS
{
get
{
return this.eRR_ITEMSField;
}
set
{
this.eRR_ITEMSField = value;
}
}
}
public partial class MESSAGE
{
private List<object> itemsField;
public MESSAGE()
{
this.itemsField = new List<object>();
}
public List<object> Items
{
get
{
return this.itemsField;
}
set
{
this.itemsField = value;
}
}
}
public partial class ITEM
{
private string eNQUIRY_REFERENCEField;
private List<object> itemsField;
private string seqField;
public ITEM()
{
this.itemsField = new List<object>();
}
public string ENQUIRY_REFERENCE
{
get
{
return this.eNQUIRY_REFERENCEField;
}
set
{
this.eNQUIRY_REFERENCEField = value;
}
}
public List<object> Items
{
get
{
return this.itemsField;
}
set
{
this.itemsField = value;
}
}
public string seq
{
get
{
return this.seqField;
}
set
{
this.seqField = value;
}
}
}
}
<RESPONSE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="EnquiryRsp.xsd">
<SERVICE>ENQUIRY</SERVICE>
<ACTION>A_SC</ACTION>
<STATUS>OK</STATUS>
<HEADER>
<MEMBER_ID>XXX</MEMBER_ID>
<USER_ID>XXXXX</USER_ID>
<RUN_NO>1</RUN_NO>
<TOT_ITEMS>1</TOT_ITEMS>
<ERR_ITEMS/>
</HEADER>
<MESSAGE>
<ITEM>
<ENQUIRY_REFERENCE>FOS000279511111UKU</ENQUIRY_REFERENCE>
<RSP_REPORT>
<ENQUIRY_TYPE>RV</ENQUIRY_TYPE>
<REPORT_DATE>26/12/2007</REPORT_DATE>
<ENQUIRY_NO>17248697</ENQUIRY_NO>
<PRODUCT_TYPE>PLN</PRODUCT_TYPE>
<NO_OF_APPLICANTS>1</NO_OF_APPLICANTS>
<ACCOUNT_TYPE>S</ACCOUNT_TYPE>
<ENQUIRY_REFERENCE>FOS000279511111UKU</ENQUIRY_REFERENCE>
<AMOUNT>0.00</AMOUNT>
<MBR_TYPE>FULL</MBR_TYPE>
<MBR_STS>ACTIV</MBR_STS>
<CONSUMER>
</CONSUMER>
<DISCLAIMER>
<DI_TEXT></DI_TEXT>
<DI_TEXT_AR lang="ar"></DI_TEXT_AR>
</DISCLAIMER>
</RSP_REPORT>
</ITEM>
</MESSAGE>
</RESPONSE>
[XmlRoot("Context")]
public class Context
{
public Context() { this.Persons = new Persons(); }
[XmlArray("Persons")]
[XmlArrayItem("Person")]
public Persons Persons { get; set; }
}
public class Persons : List<Human> { }
public class Human
{
public Human() { }
public Human(string name) { Name = name; }
public string Name { get; set; }
}
class Program
{
public static void Main(string[] args)
{
Context ctx = new Context();
ctx.Persons.Add(new Human("john"));
ctx.Persons.Add(new Human("jane"));
var writer = new StringWriter();
new XmlSerializer(typeof(Context)).Serialize(writer, ctx);
Console.WriteLine(writer.ToString());
}
}