2013-10-05 126 views
1

我有這樣C#遍歷XML父元素與XmlTextReader的

<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> 

XML文件,我特林使用如下代碼

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。無法弄清楚這裏有什麼問題?請幫忙。我需要遍歷所有日期和時間元素。

回答

1

你有沒有考慮過使用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); 
      }