2012-04-17 4 views
1

Я запрашиваю API, который возвращает ответ в XML, поэтому я искал Controlling XML Serialization Using Attributes.C# XML REST API response => Object

ответ API-интерфейс выглядит следующим образом: enter image description here То, что я хочу сделать, это берет на себя все элементы 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 
    } 
+1

Вам лучше разместить XML, как XML, вместо публикации его изображения. –

ответ

3

Необходимо правильно определить объектную модель, соответствующую 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 
} 

Надеется, что это помогает.