C# 浏览XML节点的更好方法?
我正在处理一个导入的XML文件并使用XMLDocument,我想知道是否有更好的方法来做同样的事情。 基本上,root包含MHZ节点,每个MHZ包含几个设备和一个名称。 我想计算每个MHZ节点的数量,并显示每个MHZ中的设备数量:C# 浏览XML节点的更好方法?,c#,xml,C#,Xml,我正在处理一个导入的XML文件并使用XMLDocument,我想知道是否有更好的方法来做同样的事情。 基本上,root包含MHZ节点,每个MHZ包含几个设备和一个名称。 我想计算每个MHZ节点的数量,并显示每个MHZ中的设备数量: String xmlName = "tts.xml"; XmlDocument readDoc = new XmlDocument(); readDoc.Load(xmlName); int fileNb
String xmlName = "tts.xml";
XmlDocument readDoc = new XmlDocument();
readDoc.Load(xmlName);
int fileNb = readDoc.SelectNodes("//MHZ").Count;
Console.WriteLine("MHZ number : "+fileNb);
for (int i = 0; i < fileNb; i++)
{
int deviceNb = readDoc.SelectNodes("//MHZ[" +(i+1)+ "]/device").Count;
Console.WriteLine(deviceNb);
}
String xmlName=“tts.xml”;
XmlDocument readDoc=新的XmlDocument();
readDoc.Load(xmlName);
int fileNb=readDoc.SelectNodes(“//MHZ”).Count;
Console.WriteLine(“MHZ编号:+fileNb”);
对于(int i=0;i
您看过Linq到XML吗
欲了解更多信息,请点击此处
如果您使用的是.NET 3.5或更高版本,我会使用LINQ to XML:
var doc = XDocument.Load(xmlName);
var mhzs = doc.Descendants("MHZ");
Console.WriteLine("Count of MHZ: {0}", mhz.Count());
foreach (var mhz in mhzs)
{
Console.WriteLine(mhz.Elements("device").Count());
}
创建可序列化对象,然后将xml反序列化为对象列表。这样,您就可以忠实于OOP
[DataContract]
public class Device
{
[DataMember]
public string Property { get; set; }
}
或者查看:或者在某些情况下,我创建了表示XML结构的对象,并将XML反序列化为这些对象。这为我提供了查看数据、验证和迭代数据集合的更好方法。XMLDocument很容易使用,因为您已经在使用它。同样值得一看的是XPath您可以使用将XML转换为更自然的C#对象。@xenom:如果您可以提供XML文件结构以获得精确的解决方案,那就太好了。。正如您所说,MHZ包含设备和名称。。所以“name”是属性或元素。。所以请提供xmlI,我一开始考虑序列化,但我只需要浏览和打印一些信息。我觉得这有点复杂。但是,如果我需要更多的操作,我会这样做。你会如何写每个MHZ的名称<代码>Console.WriteLine(mhz.Elements(“名称”)代码>?应该是此代码中的编译时错误…在Console.WriteLine(“MHZ计数:{0}”,MHZ.Count());它应该是“mhzs.Count()”。。。。MHZ中缺少“s”