在c#中读取xml元素并将元素的新值写回xml

本文关键字:xml 元素 新值 写回 读取 | 更新日期: 2023-09-27 18:09:36

我正在尝试阅读abc.xml,它有这个元素

            <RunTimeStamp>
            9/22/2011 2:58:34 PM
            </RunTimeStamp>

我正试图读取xml文件中元素的值,并将其存储在字符串中,一旦我完成了处理。我获得当前时间戳并将新的时间戳写回xml文件。

这是我的代码到目前为止,请帮助和指导,您的帮助将不胜感激。

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using log4net;
        using System.Xml;
        namespace TestApp
        {
            class TestApp
            {
                static void Main(string[] args)
                {
                    Console.WriteLine("'n--- Starting the  App --");
                    XmlTextReader reader = new XmlTextReader("abc.xml");
                    String DateVar = null;
                    while (reader.Read())
                    {
                        switch (reader.NodeType)
                        {
                            case XmlNodeType.Element: // The node is an element.
                                Console.Write("<" + reader.Name);
                                Console.WriteLine(">");
                                if(reader.Name.Equals("RunTimeStamp"))
                                {
                                    DateVar = reader.Value;
                                }
                                break;
                            case XmlNodeType.Text: //Display the text in each element.
                                Console.WriteLine(reader.Value);
                                break;
                            /*
                        case XmlNodeType.EndElement: //Display the end of the element.
                            Console.Write("</" + reader.Name);
                            Console.WriteLine(">");
                            break;
                             */
                        }
                    }
                    Console.ReadLine();
                    // after done with the processing.
                    XmlTextWriter writer = new XmlTextWriter("abc.xml", null);
                }
            }
        }

在c#中读取xml元素并将元素的新值写回xml

我个人不会在这里使用XmlReader等。我只需加载整个文件,最好使用LINQ to XML:

XDocument doc = XDocument.Load("abc.xml");
XElement timestampElement = doc.Descendants("RunTimeStamp").First();
string value = (string) timestampElement;
// Then later...
timestampElement.Value = newValue;
doc.Save("abc.xml");

更简单!

注意,如果值是xml格式的日期/时间,则可以转换为DateTime:

DateTime value = (DateTime) timestampElement;

之后:

timestampElement.Value = DateTime.UtcNow; // Or whatever

然而,这将只有处理有效的XML日期/时间格式-否则你将需要使用DateTime.TryParseExact

linq to XML是最好的方法。如@Jon

所示简单得多