我在解析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 :(得分: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;
}
答案 1 :(得分:0)
我在这里有这个文件的方式:http://searisen.com/xmllib/extensions.wiki
您目前可以:(假设离开是根节点的子节点)
decimal[] euros = XElement.Load(xmlFile)
.GetEnumerable("departure/pricing",
x => x.Get("price/EUR", decimal.MinValue))
.ToArray();
这将获得所有欧元,即您列出的两个欧元。