阅读相同的元素但不同的价值

时间:2013-04-17 00:05:49

标签: c# xml

我是C#的新手,我想知道是否可以这样做:

我有多个具有相同名称但不同值的元素,我想逐个比较它们。

示例:(Local)file.txt hash with(URL)file.text hash。

我尝试了一些代码,但我无法找到/创造任何好的东西。这就是我尝试过的:

XmlDocument doc = new XmlDocument(); 
doc.Load("sample.xml");
XmlElement root = doc.DocumentElement;
XmlNodeList nodes = root.SelectNodes("FileName");
foreach (XmlNode node in nodes)
{
  MessageBox.Show(node.ToString());
}

大约有13,000条XML记录。

我有这个XML:

<File FileName="file.txt" FileHash="1C395F6D2AA729A607E69DCA73F8205CEFD26AA4" FileSize="2337488" />
<File FileName="file2.txt" FileHash="B313285D73CA635EB76B8082737BDCF82481DCD0" FileSize="640000" />
<File FileName="file3.txt" FileHash="2D797F6840FB00D86B560290DD0A2A76E3FA90D8" FileSize="157" />
<File FileName="file4.txt" FileHash="D7AC7873B2A00B27451E485C65BF8562237A2562" FileSize="4702208" />
<File FileName="file5.txt" FileHash="8D89AC439D8FD44C9D9EF57D27A160BDB056D63D" FileSize="1052" /> 

2 个答案:

答案 0 :(得分:0)

我仍然不确定我是否理解您要尝试的“比较”,但以下内容应该让您开始访问您感兴趣的File元素属性。

using System.Xml;
using System.IO;
using System.Text;
using System;

 public class Example
{
   public static void Main()
   {
        XmlDocument xmlDoc= new XmlDocument(); 

        try {
            xmlDoc.Load("files.xml"); 
        }catch(System.Xml.XmlException e){
            Console.WriteLine(e);   
        }

        XmlNodeList defs = xmlDoc.GetElementsByTagName("File");

        for (int i = 0; i < defs.Count; i++)
        {
            string fn = defs[i].Attributes["FileName"].Value;
            string fh = defs[i].Attributes["FileHash"].Value;
            Console.WriteLine("File:  " + fn + "\tHash:  " + fh);
        }  
    }
}

答案 1 :(得分:0)

您必须从节点中提取属性

MessageBox.Show(node.Attributes["FileName"].Value);