2012-03-23 2 views
0

У меня возникли трудности с разбором подэлемента из XML-документа.Анализ данных дочернего элемента в документе xml

Документ содержит ряд элементов, содержащих информацию о ценах, которую мне нужно получить от цены евро. Независимо от того, что я делаю, я не могу извлечь данные, которые мне нужны. Результат всегда равен нулю.

<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

Я рекомендую использовать XDocument и Linq для XML.

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(); 

Это становится все евро, два, которые вы указали.

Смежные вопросы