2012-04-17 55 views
1

我在查詢返回XML響應的API,所以我一直在尋找Controlling XML Serialization Using AttributesC#XML REST API response =>對象

的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,而不是發佈它的圖片。 – 2012-04-18 16:11:40

回答

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 
} 

希望這有助於。