簡體   English   中英

將一個節點從一個xml復制到另一個

[英]Copy a node from one xml to another

我需要將節點從yahoo weather復制到本地xml文件。 我得到了具有所有屬性的節點

XmlNode node = xdoc.SelectSingleNode("/rss/channel/item/yweather:condition", ns);

我不知道如何在本地data.xml文件中寫入相同的節點? 因此,每次啟動應用程序時,我都想在本地xml中寫入該節點。 由於yahoo中的節點會在一小時內更新,因此我還想檢查本地xml中最后一個節點的值在yahoo天氣中是否相同,在這種情況下,請不要寫下來。 我的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" />

等等。我不想重復。 我該怎么做?

使用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節點元素放在文件中的位置。

XMLDocument類提供了從文檔中選擇節點的方法。

使用它來選擇包含您的條件的外部節點

public XmlNode SelectSingleNode(
    string xpath,
    XmlNamespaceManager nsmgr
)

然后使用xpath語句再次使用它,該語句包含您從Yahoo返回的屬性。 如果不存在節點,則使用以下命令將您的節點添加到條件集合中

public virtual XmlNode CreateNode(
    string nodeTypeString,
    string name,
    string namespaceURI
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM