簡體   English   中英

已存在多個同名元素的 C# Linq XML 查詢

[英]C# Linq XML Query where multiple elements of same name already exists

我的xml是這樣的:

<Destination>
        <CityCode>GRAGMRNCHN</CityCode>
        <CityName>Agia Marina</CityName>
        <ZoneCode>CRTCHN</ZoneCode>
        <ZoneName>Creta - Chania</ZoneName>
        <Departures>
          <Departure>
            <CountryCode>RO</CountryCode>
            <CountryName>Romania</CountryName>
            <CityCode>ROBCH1</CityCode>
            <CityName>Bucuresti</CityName>
            <GiataCodes>
              <GiataCode>28029</GiataCode>
              <GiataCode>759</GiataCode>
              <GiataCode>28575</GiataCode>
              <GiataCode>756</GiataCode>
              <GiataCode>47839</GiataCode>
            </GiataCodes>
            <Dates>
              <Date TourOpCode="EU" Nights="7,14,21">2016-06-22</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-06-29</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-07-06</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-07-13</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-07-20</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-07-27</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-08-03</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-08-10</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-08-17</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-08-24</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-08-31</Date>
              <Date TourOpCode="EU" Nights="7,14,21">2016-09-07</Date>
              <Date TourOpCode="EU" Nights="7,14">2016-09-14</Date>
              <Date TourOpCode="EU" Nights="7">2016-09-21</Date>
            </Dates>
          </Departure>

現在我想提取 CityCode(destination)、CityCode(departure)、可用日期及其夜間屬性。 我在約會! 使用 Xdcument 我只得到日期中的第一個元素。

下面是解析代碼:

 packageList = (from destination in xDoc.Descendants(nonamespace + "Destination")
                select new PackageInformation
                {
                    DestinationCityCode = destination.Element("CityCode").Value,
                    DepartureCityCode = destination.Descendants("Departure")
                        .Select( c => new DepartureCityClass()
                        {
                            DepartureCityCode = c.Element("CityCode").Value
                        }).ToList(),
                    Dates = destination.Descendants("Departures").Descendants("Departure").Descendants("Dates")
                        .Select(d => new DatesClass()
                        {
                            Date = d.Element("Date").Value,
                            Nights = d.Element("Date").Attributes("Nights").First().Value


                        }).ToList()
                }).ToList();

任何幫助! 謝謝。

試試這個,應該可以正常工作:

var packageList = (from destination in xd.Descendants("Destination")
                        select new 
                        {
                            DestinationCityCode = destination.Element("CityCode").Value,
                            DepartureCityCode = destination.Descendants("Departure")
                                .Select(c => new 
                                {
                                    DepartureCityCode = c.Element("CityCode").Value
                                }).ToList(),
                            Dates = destination.Descendants("Departure").Descendants("Dates").Descendants("Date")
                                .Select(d => new
                               {
                                    Date = d.Value,
                                    Nights = d.Attributes("Nights").First().Value


                               }).ToList()
                        }).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM