2012-03-23 18 views
0

xmlドキュメントからサブ要素を解析するのが難しいです。xmlドキュメント内の子要素からのデータの解析

この文書には、ユーロの価格を引き出すために必要な価格情報が記載された一連の要素が含まれています。私が何をしていても、私が必要とするデータを抽出することはできません。結果は常にnullです。

<departure> 
    <pricing xmlns="http://website.com/api/feeds/xmlns/20110926/"> 
     <price age_group="Adult" label="1 Adult" max_age="100" max_passengers="100" min_age="12" min_passengers="1"> 
     <USD>4249.00</USD> 
     <AUD>4299.00</AUD> 
     <CHF>3649.00</CHF> 
     <GBP>2749.00</GBP> 
     <NZD>5399.00</NZD> 
     <CAD>4399.00</CAD> 
     <EUR>3249.00</EUR> <------------this is what I need to parse 
     </price> 
    </pricing> 
    <pricing xmlns="http://website.com/api/feeds/xmlns/20110926/"> 
     <price age_group="Adult" label="1 Adult" max_age="100" max_passengers="100" min_age="12" min_passengers="1"> 
     <USD>4249.00</USD> 
     <AUD>4299.00</AUD> 
     <CHF>3649.00</CHF> 
     <GBP>2749.00</GBP> 
     <NZD>5399.00</NZD> 
     <CAD>4399.00</CAD> 
     <EUR>3249.00</EUR> <------------this is what I need to parse 
     </price> 
    </pricing> 
<departure> 


XmlNodeList departureNodes = xmlDoc.GetElementsByTagName("departure"); 
if (departureNodes.Count > 0) 
{ 
    foreach (XmlElement element in departureNodes) 
    { 
     string priceInEUR = xmlElement.SelectSingleNode("pricing/price/EUR"); // returns null 
     string priceInEUR2 = xmlElement.SelectSingleNode("//pricing/price/EUR"); // also returns null 
    } 
} 

答えて

0

XMLにXDocumentとLinqを使用することをお勧めします。

using System.Xml.Linq; 

IEnumerable<XElement> prices = from t in doc.Root.Descendants("EUR"); 
    foreach (XElement t in prices) 
    { 
     string priceInEUR = t.Value; 
    } 
0

私はここに、この文書を持っている方法:http://searisen.com/xmllib/extensions.wiki

あなたが現在行うことができます(出発を想定すると、ルート・ノードの子である)

decimal[] euros = XElement.Load(xmlFile) 
       .GetEnumerable("departure/pricing", 
       x => x.Get("price/EUR", decimal.MinValue)) 
       .ToArray(); 

これは、すべてのユーロを取得し、 2つはあなたがリストしました。