我需要将节点从yahoo weather复制到我的本地xml文件。我得到了带有
所有属性的节点XmlNode node = xdoc.SelectSingleNode("/rss/channel/item/yweather:condition", ns);
我不知道如何在我的本地data.xml文件中编写相同的节点?所以每次启动应用程序时,我都希望在本地xml中编写节点。因为yahoo中的节点像一小时一样更新,我还想检查本地xml中最后一个节点的值是否与雅虎天气相同,在这种情况下不要写下来。我的xml就像:
<condition text="Cloudy" temp="4" date="Thu, 06 Feb 2014 4:00 pm CET" />
<condition text="Cloudy" temp="3" date="Thu, 06 Feb 2014 6:00 pm CET" />
等。我不想要重复。我该怎么办?
答案 0 :(得分:1)
使用Linq-To-Xml:
XElement rss = XElement.Parse("string xml feed");
XNamespace ns = "http://...";
XElement feed = rss.Descendants(ns + "condition").Last();
XElement file = XElement.Load("file");
XElement local = file.Descendants(ns + "condition").LastOrDefault();
if (feed.Attribute("date").Value != local.Attribute("date").Value)
local.AddAfterSelf(feed);
file.Save("file");
您必须检查边缘情况,例如,如果您的文件为空,则在本地为null,并处理该情况,即将新的feed节点元素放在文件中的位置。
答案 1 :(得分:0)
XMLDocument类提供了从文档中选择节点的方法。
使用此选项可选择包含条件的外部节点
public XmlNode SelectSingleNode(
string xpath,
XmlNamespaceManager nsmgr
)
然后使用包含您从Yahoo返回的属性的xpath语句再次使用它。如果不存在任何节点,则只需使用
将节点添加到条件集合中public virtual XmlNode CreateNode(
string nodeTypeString,
string name,
string namespaceURI
)