0

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

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

示例:(本地)file.txt 散列与(URL)file.text 散列。

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

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" /> 
4

2 回答 2

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);
        }  
    }
}
于 2013-04-17T00:26:55.203 回答
0

您必须从节点中提取属性

MessageBox.Show(node.Attributes["FileName"].Value);
于 2013-04-17T00:27:23.200 回答