我正在做一个运行良好但我遇到问题的天气应用程序。 XMl似乎是:
<city>
<city_code>DE0011259</city_code>
<name>Wegberg</name>
<url>deutschland/wegberg/DE0011259.html</url>
<post_code>41844</post_code>
<forecast>
<date value="2014-12-01">
<w>2</w>
<tx>4</tx>
<pc>30</pc>
<time value="06:00">
<w>2</w>
<tx>3</tx>
<pc>30</pc>
<tn>2</tn>
<ws>11</ws>
<w_txt>wolkig</w_txt>
</time>
<time value="11:00">
<w>2</w>
<tx>4</tx>
<pc>20</pc>
<tn>3</tn>
<ws>12</ws>
<w_txt>wolkig</w_txt>
</time>
<time value="17:00">
<w>2</w>
<tx>4</tx>
<pc>20</pc>
<tn>1</tn>
<ws>9</ws>
<w_txt>wolkig</w_txt>
</time>
<time value="23:00">
<w>2</w>
<tx>1</tx>
<pc>30</pc>
<tn>1</tn>
<ws>7</ws>
<w_txt>wolkig</w_txt>
</time>
<tn>1</tn>
<ws>10</ws>
<w_txt>wolkig</w_txt>
</date>
</forecast>
</city>
对不起,如果我的英语太差了^^ 问题是我如何从其他时间获取数据 我的问题是我只从6:00开始获取数据而不知道如何从17:00或23:00获取数据
获取天气的代码:
string xml;
using (var webClient = new WebClient())
{
xml = webClient.DownloadString(URL);
}
XDocument doc = XDocument.Parse(xml);
string wind = doc.XPathSelectElement("/city/forecast/date/time/ws").Value + " km/h";
答案 0 :(得分:0)
如果你想要做的是在特定时间对XML 执行查询,那么使用Linq To XML
很容易得到你想要的东西:
XDocument doc = XDocument.Load(@"somePath\SO.xml");
// E.g. get ws value for time = "17:00"
XElement specificElement = doc.Descendants("time")
.Where(t => t.Attribute("value").Value == "17:00")
.FirstOrDefault();
if (specificElement != null)
{
string wind = specificElement.Element("ws").Value + " km/h";
}
答案 1 :(得分:0)
我的问题是我只从6:00开始获取数据而不知道如何从17:00或23:00获取数据
好像你应该在你的xpath中有一个条件,例如,
string wind = doc.XPathSelectElement("/city/forecast/date/time[@value='17:00']/ws")
.Value + " km/h";
(参见 [@value='17:00']
)
如果您想获取所有值,则可以使用XPathSelectElement**s**
,如评论中所述。