根据我之前的一些问题,我整理了以下内容:
var xml = "<root><Data><Info>data</Info></Data></root>";
var xmlString = (from data in XElement.Parse(xml).Descendants("Data")
where data.Descendants().Any()
select data.Descendants().First().Value).FirstOrDefault();
var fileString = File.ReadAllText(@"1.txt");
Console.WriteLine("{0}", fileString == xmlString ? 1 : 0);
上面应该是加载一个xml的特定部分,加载一个文本文件,然后比较两者。对我来说不幸的是,我是 C# 及其一些概念的新手,并且不确定如何var xml = "<root><Data><Seperator>data</Seperator></Data></root>";
从同一目录中的特定 xml 文件进行读取。
我知道我可以使用:
FileStream stream = new FileStream("1234.xml", FileMode.Open);
XmlReader reader = new XmlTextReader(stream);
while(reader.Read())
{
Console.WriteLine(reader.Value);
}
如果我有 1234.xml 并想将其输出到控制台,但我不知道如何以定义的变量 xml 能够读取它的方式加载文件的内容。
编辑:
根据下面的帖子,我尝试使用以下内容,但它在控制台中返回空白:
using(XmlReader reader = XmlReader.Create("2.xml"))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name.ToLower() == "data")
{
string xml = reader.ReadOuterXml();
var xmlString = (from data in XDocument.Parse(xml).Elements()
select data.Elements().First().Value).FirstOrDefault();
xmlString = xmlString.Replace("\n", "").Trim();
var fileString = File.ReadAllText(@"8.txt");
Console.WriteLine("{0}", fileString == xmlString ? 1 : 0);
}
}
}
}
编辑2:
XML 文件是一个哈希值和一个签名(我只是想抓取和比较哈希及其值):
<?xml version="1.0"?>
-<root>-<Data><Info>Hash: xxxxxxxxxxxxxxxxxxxxxxxxxxx</Info></Data>-<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">-<SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>-<Reference URI="">-<Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>GHOSJRUqcHnZ3M090/5/KhvghyQ=</DigestValue></Reference></SignedInfo><SignatureValue>oib+LAXqJshDFm3YM63qkSsJxxF+t0uahGax8tLrjSPJUjW045iYvB4LJCgMeF9oxatbWnVB9hGbvtVnl4iewJDL3kjnjvot5CLozMOaIGJgdys5MP8ncx771itANTm8wi8KgnqVjGjvTakEmcdwcSdRXuCP1WGOwuXm5StkY8Q=</SignatureValue></Signature></root>