0

我正在使用导入的 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);
        }
4

5 回答 5

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());
}
于 2012-07-03T09:07:38.287 回答
0

您是否查看过 Linq to XML 以获取更多信息,请查看此处 http://msdn.microsoft.com/en-us/library/bb387098.aspx

于 2012-07-03T09:07:37.563 回答
0

创建可序列化对象,然后将您的 xml 反序列化为对象列表。这样您就可以忠于 OOP。

[DataContract]
public class Device
{
   [DataMember]
   public string Property { get; set; }
}

或查看:DataContract XML 序列化和 XML 属性如何反序列化 XML 文档

于 2012-07-03T09:08:16.733 回答
0

在某些情况下,我创建表示 XML 结构的对象并将 XML 反序列化为这些对象。这为我提供了一种更好的方式来查看数据、验证和迭代数据集合。

于 2012-07-03T09:08:32.750 回答
0

XMLDocument 很容易使用,因为您已经在使用它了。另外值得一看 XPath

于 2012-07-03T09:09:29.743 回答