2012-01-22 49 views
2

我有以下天气XML数据:我需要返回匹配的变量值的数据

<weather> 
    <current_conditions> 
    <condition data="Mostly Cloudy" /> 
    <temp_f data="48" /> 
    <temp_c data="9" /> 
    <humidity data="Humidity: 71%" /> 
    <icon data="/ig/images/weather/mostly_cloudy.gif" /> 
    <wind_condition data="Wind: W at 17 mph" /> 
    </current_conditions> 
    <forecast_conditions> 
    <day_of_week data="Sun" /> 
    <low data="34" /> 
    <high data="48" /> 
    <icon data="/ig/images/weather/mostly_sunny.gif" /> 
    <condition data="Partly Sunny" /> 
    </forecast_conditions> 
    <forecast_conditions> 
    <day_of_week data="Mon" /> 
    <low data="32" /> 
    <high data="45" /> 
    <icon data="/ig/images/weather/sunny.gif" /> 
    <condition data="Clear" /> 
    </forecast_conditions> 
</weather> 

我想回到根据当天的字符串,例如,今天:

string theCondition = doc.XPathSelectElement(
    @"weather/current_conditions/condition" 
).Attribute("data").Value; 

如果我有一个变数,那就是= "Sun"我想返回与上面相同的字符串,但是<forecast_conditions>其中<day_of_week data="Sun">以及同样适用于星期一,星期二,星期三。

如果没有数据可用,那么我需要Console.WriteLine("no data")

由于我是编程新手,我想继续使用doc.XPathSelectElement作为这个阶段。 在此先感谢您的帮助!

+0

请不要以 “C#” 和这样的前缀您的图书。这就是标签的用途。 –

回答

1
string day = "Sun"; 
string path = "weather/forecast_conditions[day_of_week/@data='" + day + "']/condition"; 

doc.XPathSelectElement(path).Attribute("data").Value; 

请注意,您需要检查是否doc.XPathSelectElement(path)实际返回匹配你调用它.Attribute("data").Value之前。

+0

非常感谢! – dave2012

+0

将其导出为CSV的最简单方法是什么? – dave2012

+0

@dave这是另一个问题的材料。 – Tomalak

0

使用

string expr = 
    string.Format 
    ("string/*/forecast_conditions[day_of_week/@data = '{0}']/condition/@data)", 
     weekDay); 

string forcastData = (string) doc.XPathEvaluate(expr); 
相关问题