将xml反序列化为C#列表为空?
除以下列表外,所有反序列化都有效: (resdes是一个列表) 这项工作:将xml反序列化为C#列表为空?,c#,xml,deserialization,poco,C#,Xml,Deserialization,Poco,除以下列表外,所有反序列化都有效: (resdes是一个列表) 这项工作: <Return> <test>0010000725</test> </Return> public class Return { // ELEMENTS [XmlElement("test")] public Test test{ get; set; } } 您需要创建两个类,如下所示: [Serializable]
<Return>
<test>0010000725</test>
</Return>
public class Return
{
// ELEMENTS
[XmlElement("test")]
public Test test{ get; set; }
}
您需要创建两个类,如下所示:
[Serializable]
[XmlRoot("ResDes")]
[XmlType]
public class ResDes
{
[XmlElement("item")]
public List<ResDesItem> ResDesItem { get; set; }
}
然后使用以下代码对其进行反序列化,如下所示:
XmlSerializer xmlReq = new XmlSerializer(typeof(ResDes));
string xml = @"<ResDes> <item><PoBox/><City1>South Korea</City1><Country>SK</Country> </item></ResDes>";
Stream stream = new MemoryStream(Encoding.Unicode.GetBytes(xml));
var resposnseXml = (ResDes)xmlReq.Deserialize(stream);
XmlSerializer xmlReq=新的XmlSerializer(typeof(ResDes));
字符串xml=@“南朝鲜”;
Stream=newmemoryStream(Encoding.Unicode.GetBytes(xml));
var resposnseXml=(ResDes)xmlReq.Deserialize(stream);
*注意:不要忘记在类的每个属性或成员上添加[DataMember]*
如果要以DataContract方式执行此操作,请按以下方式使用:
[DataContract]
[XmlRoot("item")]
[XmlType]
public class ResDesItem
{
[XmlElement("PoBox")]
[DataMember]
public string PoBox { get; set; }
[XmlElement("City1")]
[DataMember]
public string City1 { get; set; }
[XmlElement("Country")]
[DataMember]
public string Country { get; set; }
}
及
[DataContract]
[XmlRoot(“ResDes”)]
[XmlType]
公共类ResDes
{
[XmlElement(“项目”)]
[数据成员]
公共列表ResDesItem{get;set;}
}
rest与我之前的回答相同。您是否尝试使用
[Serializable]
属性标记ResDesItem类?您好,我目前正在为电话平台开发,因此我使用了其等效的[DataContract()],但它仍然是空的ResDesItem
类在哪里?你能粘贴那个类吗?嗨,Mahesh,我确实尝试了上面的代码,但是我没有使用Serializable属性,我不得不使用DataContract,因为它只在windows phone中可用,但仍然不起作用。为什么你回答了两次?如果有人想使用[DataContract]进行序列化,第二个答案会起作用,如果有人想使用它[可序列化]答案1将起作用。因此,我为它添加了单独的答案。@JohnSaunders,我需要删除任何答案吗?嗨,我确实尝试了这段代码,但是我得到了异常,因为我想反序列化所有xml,所以将其改为流并尝试反序列化响应soap头会产生异常,但是我猜你的答案会起作用,It’谢谢你的帮助
[Serializable]
[XmlRoot("ResDes")]
[XmlType]
public class ResDes
{
[XmlElement("item")]
public List<ResDesItem> ResDesItem { get; set; }
}
[Serializable]
[XmlRoot("item")]
[XmlType]
public class ResDesItem
{
[XmlElement("PoBox")]
public string PoBox { get; set; }
[XmlElement("City1")]
public string City1 { get; set; }
[XmlElement("Country")]
public string Country { get; set; }
}
XmlSerializer xmlReq = new XmlSerializer(typeof(ResDes));
string xml = @"<ResDes> <item><PoBox/><City1>South Korea</City1><Country>SK</Country> </item></ResDes>";
Stream stream = new MemoryStream(Encoding.Unicode.GetBytes(xml));
var resposnseXml = (ResDes)xmlReq.Deserialize(stream);
[DataContract]
[XmlRoot("item")]
[XmlType]
public class ResDesItem
{
[XmlElement("PoBox")]
[DataMember]
public string PoBox { get; set; }
[XmlElement("City1")]
[DataMember]
public string City1 { get; set; }
[XmlElement("Country")]
[DataMember]
public string Country { get; set; }
}
[DataContract]
[XmlRoot("ResDes")]
[XmlType]
public class ResDes
{
[XmlElement("item")]
[DataMember]
public List<ResDesItem> ResDesItem { get; set; }
}