一个关于xml节点处理的问题
愚生在做项目时遇到了在解析xml节点时,发现的节点名称相同,我想提取两个"Delta"里的数据,如何操作~愚生的代码如下:
if (!string.IsNullOrEmpty(msgAlarm.MateMetaData.Xmlmessage))
{
xml.LoadXml(msgAlarm.MateMetaData.Xmlmessage);
if (msgAlarm.MateMetaData.Messagetype.IndexOf("CountingEventMsg") != -1)
{
xml.SelectNodes()
if (msgAlarm.MateMetaData.Messagetype.IndexOf("CounterIn") != -1)
{
xmlNodeList = xml.GetElementsByTagName("Delta");
if (xmlNodeList != null && xmlNodeList.Count > 0)
{
cnt1 = xmlNodeList[0].InnerText.Trim();
}
}
if (msgAlarm.MateMetaData.Messagetype.IndexOf("CounterOut") != -1)
{
xmlNodeList = xml.GetElementsByTagName("Delta");
if (xmlNodeList != null && xmlNodeList.Count > 0)
{
cnt2 = xmlNodeList[0].InnerText.Trim();
}
}
// return;
}
}
<CountingEventMsg>
<CustomerNumber>8807</CustomerNumber>
<FeedNumber>1</FeedNumber>
<FeedNickname>
10-1.mpg
</FeedNickname>
<Event>
<Feed> 0 </Feed>
<EventName> FlowCounting </EventName>
<EventType> CountersState </EventType>
<StartTime>1383760530</StartTime>
<EndTime>1383760560</EndTime>
<CounterIn>
<Value> 823 </Value>
<Delta> 3 </Delta>
</CounterIn>
<CounterOut>
<Value> 1239 </Value>
<Delta> 9 </Delta>
</CounterOut>
</Event>
<LastDay>
<In>823</In>
<Out>1239</Out>
</LastDay>
<LastHour>
<In>446</In>
<Out>688</Out>
</LastHour>
</CountingEventMsg>
[解决办法]
可以直接取:
Console.WriteLine(xmlDocument.SelectSingleNode("CountingEventMsg/Event/CounterIn/Delta").InnerText);
Console.WriteLine(xmlDocument.SelectSingleNode("CountingEventMsg/Event/CounterOut/Delta").InnerText);
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
//Create the XmlDocument.
XmlDocument doc = new XmlDocument();
doc.Load("books.xml");
//Display all the book titles.
XmlNodeList elemList = doc.GetElementsByTagName("title");
for (int i=0; i < elemList.Count; i++)
{
Console.WriteLine(elemList[i].InnerXml);
}
}
}