在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);
}
}
}
我个人不会在这里使用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