好的另一个WPF问题,我想这只是一般的.NET。我有一个从 URL 检索的 xml 文档。
我想从文档中获取多个值(天气数据、位置、其他一些字符串)。
当我使用 XmlTextReader 时,我可以调用我的方法来提取值。第一次通过方法来搜索 xml 节点并获取值(XMLTextReader 对象)时,我得到了正确的数据,但随后 XMLTextReader 死了。不知道为什么它会被取消。所以我不得不在下面的 FindTags... 方法中执行这个 UGLY 代码。我只想继续将 xtr (XMLTextreader) 传递回我的 find 方法。这是读者的本性吗?我也不想每次都点击 URL ......这似乎也是错误的。
帮助..这一切都感觉不对。
谢谢。
GetWeatherFeed("97229", "//weather//loc//dnam", "//weather//cc//tmp", "/weather/cc/icon");
获取 WeatherFeed 方法(截图)
System.Xml.XmlTextReader xtr = new System.Xml.XmlTextReader(Url that retuns xm);
System.Collections.Hashtable ht = new System.Collections.Hashtable();
ht = FindTagsUsingXPthNaviatorAndXPathDocumentNew(xtr, location, temperature, iconid);
lblLocation.Content = ht["Location"].ToString();
lblWeatherCondition.Content = ht["Weather"].ToString();
public System.Collections.Hashtable FindTagsUsingXPthNaviatorAndXPathDocumentNew(System.Xml.XmlTextReader xtr, string nodeToLocate1, string nodeToLocate2, string nodeToLocate3)
{
System.Xml.XPath.XPathDocument xpDoc = new System.Xml.XPath.XPathDocument(xtr);
System.Xml.XPath.XPathNavigator xpNav = xpDoc.CreateNavigator();
System.Xml.XPath.XPathExpression xpExpression = xpNav.Compile(nodeToLocate1);
System.Xml.XPath.XPathNodeIterator xpIter = xpNav.Select(xpExpression);
System.Collections.Hashtable ht = new System.Collections.Hashtable();
while (xpIter.MoveNext())
{
ht.Add("Location", xpIter.Current.Value);
}
xpExpression = xpNav.Compile(nodeToLocate2);
xpIter = xpNav.Select(xpExpression);
while (xpIter.MoveNext())
{
ht.Add("Weather", xpIter.Current.Value);
}
xpExpression = xpNav.Compile(nodeToLocate3);
xpIter = xpNav.Select(xpExpression);
while (xpIter.MoveNext())
{
ht.Add("Icon", xpIter.Current.Value);
}
return ht;
}