[英]C# XML REST API response => Object
我正在查询一个以XML格式返回响应的API,因此我一直在研究使用属性控制XML序列化 。
API响应如下所示: 我想要做的是获取所有CampaignDTO元素(0 .. *)并将它们放在一个列表中。 怎么可以这样做? 由于最后的Totalcount元素,我一直遇到错误。
public class Campaign
{
#region CTor
public Campaign()
{
}
#endregion
#region Properties
[XmlElement(ElementName = "Id_campaign")]
public string ID_Campaign { get; set; }
[XmlElement(ElementName = "Campaignname")]
public string ElementName { get; set; }
[XmlElement(ElementName = "Websiteurl")]
public string WebsiteUrl { get; set; }
[XmlElement(ElementName = "Privacypolicyurl")]
public string PrivacyPolicyUrl { get; set; }
[XmlElement(ElementName = "Termsurl")]
public string TermsUrl { get; set; }
[XmlElement(ElementName = "Pricepageurl")]
public string PricepageUrl { get; set; }
[XmlElement(ElementName = "Maxcredit")]
public Int32 MaxCredit { get; set; }
[XmlElement(ElementName = "Fk_id_currency")]
public string FK_ID_Currency { get; set; }
[XmlElement(ElementName = "Maxscans")]
public short MaxScans { get; set; }
[XmlElement(ElementName = "Startdate")]
public DateTime Startdate { get; set; }
[XmlElement(ElementName = "Enddate")]
public DateTime Enddate { get; set; }
[XmlElement(ElementName = "Starthour")]
public short Starthour { get; set; }
[XmlElement(ElementName = "Endhour")]
public short Endhour { get; set; }
[XmlElement(ElementName = "Pmam")]
public string PMAM { get; set; }
[XmlElement(ElementName = "Language")]
public string Language { get; set; }
[XmlElement(ElementName = "Fk_id_merchantapp")]
public string FK_ID_MerchantApp { get; set; }
[XmlElement(ElementName = "Campaigntype")]
public string CampaignType { get; set; }
[XmlElement(ElementName = "Createtimestamp")]
public DateTime CreateTimestamp { get; set; }
[XmlElement(ElementName = "Lastupdate")]
public DateTime LastUpdate { get; set; }
[XmlElement(ElementName = "Lastupdateby")]
public string LastUpdateBy { get; set; }
[XmlElement(ElementName = "Status")]
public short Status { get; set; }
#endregion
}
您必须正确定义与xml对应的对象模型。 基于上面的示例xml,我提出了以下模型
[XmlRoot("CampaignListXml")]
public class CampaignList
{
[XmlElement]
public Allcampaign Allcampaign;
[XmlElement]
public int TotalCount;
}
public class Allcampaign
{
[XmlElement("CompaignDTO", typeof(Campaign))]
public Campaign[] CampaignArray;
}
public class Campaign
{
#region CTor
public Campaign()
{
}
#endregion
#region Properties
[XmlElement(ElementName = "Id_campaign")]
public string ID_Campaign { get; set; }
[XmlElement(ElementName = "Campaignname")]
public string ElementName { get; set; }
[XmlElement(ElementName = "Websiteurl")]
public string WebsiteUrl { get; set; }
[XmlElement(ElementName = "Privacypolicyurl")]
public string PrivacyPolicyUrl { get; set; }
[XmlElement(ElementName = "Termsurl")]
public string TermsUrl { get; set; }
[XmlElement(ElementName = "Pricepageurl")]
public string PricepageUrl { get; set; }
[XmlElement(ElementName = "Maxcredit")]
public Int32 MaxCredit { get; set; }
[XmlElement(ElementName = "Fk_id_currency")]
public string FK_ID_Currency { get; set; }
[XmlElement(ElementName = "Maxscans")]
public short MaxScans { get; set; }
[XmlElement(ElementName = "Startdate")]
public DateTime Startdate { get; set; }
[XmlElement(ElementName = "Enddate")]
public DateTime Enddate { get; set; }
[XmlElement(ElementName = "Starthour")]
public short Starthour { get; set; }
[XmlElement(ElementName = "Endhour")]
public short Endhour { get; set; }
[XmlElement(ElementName = "Pmam")]
public string PMAM { get; set; }
[XmlElement(ElementName = "Language")]
public string Language { get; set; }
[XmlElement(ElementName = "Fk_id_merchantapp")]
public string FK_ID_MerchantApp { get; set; }
[XmlElement(ElementName = "Campaigntype")]
public string CampaignType { get; set; }
[XmlElement(ElementName = "Createtimestamp")]
public DateTime CreateTimestamp { get; set; }
[XmlElement(ElementName = "Lastupdate")]
public DateTime LastUpdate { get; set; }
[XmlElement(ElementName = "Lastupdateby")]
public string LastUpdateBy { get; set; }
[XmlElement(ElementName = "Status")]
public short Status { get; set; }
#endregion
}
现在您可以从xml构造对象,如下所示
using (StringReader reader = new StringReader(xml))
{
XmlSerializer serializer = new XmlSerializer(typeof(CampaignList));
CampaignList x1 = serializer.Deserialize(reader) as CampaignList;
Compaign[] compaignArray = x1.Allcompaign.CompaignArray; //This will have all the compaign list
}
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.