Перезаписать значение XML-файла - PullRequest
1 голос
/ 09 февраля 2011

У меня есть такой xml-файл

<count>0</count>

Теперь я хочу перезаписать значение 0. Как это сделать в c #?

EDIT

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

Это мой XML-файл. Я хочу записать значение в элементе электронной почты, а также изменить значение элемента 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 ]

3 голосов
/ 09 февраля 2011

Вы не показываете нам весь XML, поэтому мы не можем подробно рассказать вам, как это сделать.

По сути, если ваш XML-файл довольно маленький, вы можете загрузить его в XmlDocument и затем найдите этот <child> узел, используя выражение XPath, а затем замените значение этого узла.

Что-то вроде:

// 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 голос
/ 09 февраля 2011

Использование 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 - отличный инструмент для экспериментов с этим.

1 голос
/ 09 февраля 2011

Вы можете прочитать файл в C #, используя C # XML. Классы изменяют значение и затем записывают его обратно в файл.

Для этого можно использовать ReplaceChild Method .1006 * для получения дополнительной информации прочитайте XmlDocument и посмотрите Пример Microsoft

0 голосов
/ 09 февраля 2011

Ваша прямая проблема - использование doc.SelectNodes("count") вместо doc.GetElementsByTagName("count")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...