2017-02-28 56 views
0

我有一個問題,我試圖將所有銷售期(SalesYear,SalesToday ...)XML元素放到一個自定義C#列表中,其中所有銷售期都應該是項目。C#將特定的xml元素反序列化到自定義列表中

這是返回的XML我反序列化:

<SalesStatisticsPartner> 
    <PartnerId>137</PartnerId> 
    <PartnerName>Humac DK</PartnerName> 
    <LocalCurrency>DKK</LocalCurrency> 
    <SalesYear>1252</SalesYear> 
    <SalesYearPremium>1861548.0</SalesYearPremium> 
    <SalesLastMonth>1241</SalesLastMonth> 
    <SalesLastMonthPremium>1852359.0</SalesLastMonthPremium> 
    <SalesMonth>11</SalesMonth> 
    <SalesMonthPremium>9189.0</SalesMonthPremium> 
    <SalesLastWeek>0</SalesLastWeek> 
    <SalesLastWeekPremium>0.0</SalesLastWeekPremium> 
    <SalesWeek>0</SalesWeek> 
    <SalesWeekPremium>0.0</SalesWeekPremium> 
    <SalesYesterday>0</SalesYesterday> 
    <SalesYesterdayPremium>0.0</SalesYesterdayPremium> 
    <SalesToday>0</SalesToday> 
    <SalesTodayPremium>0.0</SalesTodayPremium> 
</SalesStatisticsPartner> 

這是我反序列化到我目前的C#類:

[XmlRoot(ElementName = "SalesStatisticsPartner"] 
    public class SalesStatisticsPartner 
    { 
     public int PartnerId { get; set; } 

     public string PartnerName { get; set; } 

     public List<SalesPeriod> SalesPeriods { get; set; } 

     public string LocalCurrency { get; set; } 

     public int SalesYear { get; set; } 

     public double SalesYearPremium { get; set; } 

     public int SalesLastMonth { get; set; } 

     public double SalesLastMonthPremium { get; set; } 

     public int SalesMonth { get; set; } 

     public double SalesMonthPremium { get; set; } 

     public int SalesLastWeek { get; set; } 

     public double SalesLastWeekPremium { get; set; } 

     public int SalesWeek { get; set; } 

     public double SalesWeekPremium { get; set; } 

     public int SalesYesterday { get; set; } 

     public double SalesYesterdayPremium { get; set; } 

     public int SalesToday { get; set; } 

     public double SalesTodayPremium { get; set; } 
    } 

爲什麼我會喜歡把每一個理由銷售期列入清單是因爲我需要遍歷代碼中的所有可能的銷售期,並且很遺憾,我無法更改XML結構。

+1

這是什麼問題?對不起,但我真的不明白什麼是問題。你能解釋你想做什麼嗎?也許用代碼? – STORM

回答

0

您應該能夠將XML加載到XDocument並提取信息。 例如,這將返回含有元素(SalesYear等)作爲密鑰,以及其作爲每一個元素的名字的值值的名稱的詞典始於「銷售」:

xDoc.Root.Element("SalesStatisticsPartner").Elements().Where(e => e.Name.LocalName.StartsWith("Sales")).ToDictionary(e => e.Name.Localname, e => e.Value);

如果你只是想的元素與「銷售」開頭的名稱的列表,你可以這樣做:

xDoc.Root.Element("SalesStatisticsPartner").Elements().Where(e => e.Name.LocalName.StartsWith("Sales")).Select(e => e.Name.LocalName).ToList();

您可能需要更改取決於你的XML的確切結構的代碼,但一般的方法應該管用。