读取一个xml元素并在C#中将元素的新值写回xml

时间:2011-09-22 19:28:20

标签: c# .net xml

我正在尝试阅读包含此元素的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);

                }
            }
        }

2 个答案:

答案 0 :(得分:8)

我个人不会在这里使用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等。

答案 1 :(得分:-1)

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

所示,更简单,更容易