我正在使用导入的XML文件并使用XMLDocument我想知道是否有更好的方法来做同样的事情。 基本上root包含MHZ节点,每个MHZ包含几个设备和一个名称。 我想计算每个MHZ节点并显示每个MHZ中的设备数量:
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);
}
答案 0 :(得分:1)
如果您使用的是.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());
}
答案 1 :(得分:0)
您是否看过Linq to XML 有关更多信息,请点击此处 http://msdn.microsoft.com/en-us/library/bb387098.aspx
答案 2 :(得分:0)
创建可序列化对象,然后将xml反序列化为对象列表。这样你就可以忠于OOP。
[DataContract]
public class Device
{
[DataMember]
public string Property { get; set; }
}
或者查看:DataContract XML serialization and XML attributes或How to Deserialize XML document
答案 3 :(得分:0)
在某些情况下,我创建表示XML结构的对象,并将XML反序列化为这些对象。这为我提供了一种更好的方式来查看数据,验证和迭代数据集合。
答案 4 :(得分:0)
XMLDocument很容易使用,因为您已经在使用它。另外值得一看XPath