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

标签 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);

                }
            }
        }

最佳答案

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

关于c# - 在C#中读取一个xml元素并将元素的新值写回xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7520304/

相关文章:

c# - 如何通过 C# 代码运行 powercfg 的功能?

.net - 针对不同 .NET Framework 构建 TeamCity NuGet 包

.NET 在 Server 2008 中永久缓存 DNS

xml - Findbugs XML 报告缺少排名

c# - 在 Datagridview 中显示错误图标

c# - Sql DataReader 有行但返回空数据

c# - 如何使用 LINQ 从字符串中删除字符

c# - 是否可以通过反射获取程序集的评论?

xml - XPath 多属性条件变量

css - 生成对 <li> 的引用