繁体   English   中英

C#XML REST API响应=>对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM