读书人

一个关于xml节点处理的有关问题

发布时间: 2013-11-21 23:38:25 作者: rapoo

一个关于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;
}

}

需要解析的xml如下:
<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);

[解决办法]
引用:
Quote: 引用:

可以直接取:
  Console.WriteLine(xmlDocument.SelectSingleNode("CountingEventMsg/Event/CounterIn/Delta").InnerText);

Console.WriteLine(xmlDocument.SelectSingleNode("CountingEventMsg/Event/CounterOut/Delta").InnerText);

额~可是我需要加个判断呀,因为是个报警报文,有些节点可能不存在~初学C#,还望指教

那你就判断xmlDocument.SelectSingleNode("CountingEventMsg/Event/CounterIn/Delta")
xmlDocument.SelectSingleNode("CountingEventMsg/Event/CounterOut/Delta")
是否存在就行了,可以直接取的

[解决办法]

GetElementsByTagName 的用法参考msdn:
http://msdn.microsoft.com/en-us/library/dc0c9ekk(v=vs.110).aspx

以下代码来自上面的链接

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);
}

}
}

读书人网 >C#

热点推荐