C# 使用 XmlTextReader 遍历 XML 父元素
本文关键字:元素 XML 遍历 使用 XmlTextReader | 更新日期: 2023-09-27 18:34:04
我有这样的XML文件
<Alarms>
<Alarm>
<Date>2013-10-05</Date>
<Time>11:50</Time>
</Alarm>
<Alarm>
<Date>2013-10-05</Date>
<Time>11:55</Time>
</Alarm>
<Alarm>
<Date>2013-10-05</Date>
<Time>12:05</Time>
</Alarm>
<Alarm/>
</Alarms>
我正在使用以下代码阅读它
XmlTextReader objXmlTextReader = new XmlTextReader("Alarms.xml");
while (objXmlTextReader.Read())
{
objXmlTextReader.ReadToFollowing("Date");
MessageBox.Show(objXmlTextReader.ReadElementContentAsString());
objXmlTextReader.ReadToFollowing("Time");
MessageBox.Show(objXmlTextReader.ReadElementContentAsString());
}
objXmlTextReader.Close();
但它不会循环每个"警报"父元素。仅在消息框中显示 2013-10-05 和 11:55。不知道这里出了什么问题?请帮忙。我需要遍历所有日期和时间元素。
您是否考虑过使用 Linq 和 System.Xml.Linq?
其代码如下所示:
var xdoc = XDocument.Load("Alarms.xml");
foreach (var x in xdoc.Root.Elements("Alarm")) {
Console.WriteLine(x.ToString());
var date = x.Element("Date");
var time = x.Element("Time");
Console.WriteLine("Date = {0}", date == null ? "<empty>": date.Value);
Console.WriteLine("Time = {0}", time == null ? "<empty>": time.Value);
}