我正在尝试阅读具有此元素的abc.xml
<RunTimeStamp>
9/22/2011 2:58:34 PM
</RunTimeStamp>
Run Code Online (Sandbox Code Playgroud)
我试图读取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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我个人不会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");
Run Code Online (Sandbox Code Playgroud)
更简单!
请注意,如果值是XML格式的日期/时间,则可以转换为DateTime:
DateTime value = (DateTime) timestampElement;
Run Code Online (Sandbox Code Playgroud)
然后:
timestampElement.Value = DateTime.UtcNow; // Or whatever
Run Code Online (Sandbox Code Playgroud)
但是,这只会处理有效的XML日期/时间格式 - 否则您将需要使用DateTime.TryParseExact等.