覆盖xml文件值

时间:2011-02-09 17:00:29

标签: c# xml overwrite

我有一个像这样的xml文件

<count>0</count>

现在我希望覆盖值0.如何在c#中执行此操作?

修改

<counter>
  <count>0</count>
  <email>
  </email>
</counter>`

这是我的XML文件我想在email元素中写一个值,同时也改变count元素的值

            XmlDocument doc = new XmlDocument();
            doc.Load(COUNTER);
            foreach (XmlNode node in doc.SelectNodes("count"))
            {
                node.InnerText = (count-1).ToString();
            }
            foreach (XmlNode node in doc.SelectNodes("email"))
            {
                node.InnerText = (count - 1).ToString();
            }
            doc.Save(COUNTER); `

当我这样做时,没有值被写入文件

4 个答案:

答案 0 :(得分:3)

您没有向我们展示整个XML,因此我们无法详细告诉您如何执行此操作。

基本上,如果您的XML文件相当小,可以将其加载到XmlDocument中,然后使用XPath表达式搜索该<child>节点,然后替换该节点的值。

类似的东西:

// create your XmlDocument
XmlDocument doc = new XmlDocument();

// load the XML from a file on disk - ADAPT to your situation!
doc.Load(@"C:\test.xml");

// search for a node <count>
XmlNode countNode = doc.SelectSingleNode("/counter/count");

// if node is found
if(countNode != null)
{
    // update the node's .InnerText value (the "contents" of the node)    
    countNode.InnerText = "42";

}

// search for a node <email>
XmlNode emailNode = doc.SelectSingleNode("/counter/email");

// if node is found
if(emailNode != null)
{
    // update the node's .InnerText value (the "contents" of the node)    
    emailNode.InnerText = "bob@microsoft.com";
}

// save XmlDocument out to disk again, with the change
doc.Save(@"C:\test_new.xml");

答案 1 :(得分:1)

您可以使用C#XML Classes在C#中读取文件,更改该值,然后将其写回文件。

您可以使用ReplaceChild Method

有关详情,请参阅XmlDocument 并查看此Microsoft Example

答案 2 :(得分:1)

使用Linq to Xml:

XElement x = XElement.Parse("<myDocument><code>0</code></myDocument>");
x.Descendants().Where(n=>n.Name.LocalName.Equals("code")).ToList().ForEach(n=>n.SetValue("1"));

LINQPad是尝试此操作的绝佳工具。

答案 3 :(得分:0)

您的直接问题是使用doc.SelectNodes("count")代替doc.GetElementsByTagName("count")