2012-01-22 60 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); 
相關問題