2011-06-29 3 views
2

Привет, ребята Я разрабатываю приложение для Windows Phone 7, и у меня возникают проблемы с анализом XML-документа с помощью запросов XDocument и Linq. Мне нужен только определенный бит довольно большого фрагмента XML, и на узлах есть много повторяющихся имен.Windows phone 7 xml linq queries problem

<itemListCollection xmlns="urn:webjet.com.au" xmlns:i="http://www.w3.org/2001/XMLSchema-?Instance"> 
<itemList> 
    <listCode>FlightSearchAirportsTT</listCode> 
    <items> 
     <item> 
      <code>ADL</code> 
      <value>Adelaide</value> 
     </item> 
     <item> 
      <code>BNE</code> 
      <value>Brisbane</value> 
     </item> 
     .... 
     .... 
    </items> 
</itemList> 
<itemList> 
    <listCode>AIRPORTCODES_LATLONS</listCode> 
    <items> 
     <item> 
      <code>EBB</code> 
      <value>0.060277777777778;32.4</value> 
     </item> 
     <item> 
      <code>NYK</code> 
      <value>0.066666666666667;37.03333333333</value> 
     </item> 
        ........ 
        ....... 
    <item> 
      <code>KAB</code> 
      <value>ZW</value> 
     </item> 
     <item> 
      <code>VFA</code> 
      <value>ZW</value> 
     </item> 
    </items> 
</itemList> 

Я только хочу, чтобы элементы в первом ITEMLIST, так что я могу использовать их, чтобы создать объект с двумя атрибутами код аэропорта и названия аэропорта. Однако я не знаю, как извлечь эту точную часть.

ответ

4

Это вернет первый XElement с именем itemList.

 // if your xml is in a file: 
     XDocument doc = XDocument.Load("/path/of/xml"); 

     // if your xml is in a string field: 
     XDocument doc = XDocument.Parse(stringField); 
     XElement firstList = doc.Descendants().Where(x => x.Name == "itemList").First(); 
+1

спасибо valipour. Для кого-то еще интересно, я тогда использовал foreach (элемент XElement в firstList.Descendants (ns + "item")) { airportElements.Add (элемент); } для получения индивидуально – user704314