2012-04-17 3 views
1

XML로 응답을 반환하는 API를 쿼리하고 있으므로 Controlling XML Serialization Using Attributes을 조사했습니다.C# XML REST API 응답 => Object

API 응답은 다음과 같습니다 이 enter image description here 내가하고 싶은 것은 (0 .. *)를 모든 CampaignDTO 요소를 받아 목록에 넣어. 어떻게이 일을 할 수 있겠습니까? 마지막에 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을 기반으로, 나는 이제 희망이 도움이

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 
} 

다음과 같이 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 
} 

을 마련했습니다.