我正在尝试阅读包含此元素的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);
}
}
}
答案 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
所示,更简单,更容易