浏览XML节点的更好方法是什么?

时间:2012-07-03 09:04:12

标签: c# xml

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

5 个答案:

答案 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 attributesHow to Deserialize XML document

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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