我是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" />
答案 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);