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。不知道这里出了什么问题?请帮忙。我需要遍历所有日期和时间元素。

C# 使用 XmlTextReader 遍历 XML 父元素

您是否考虑过使用 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);
            }
相关文章: