以前の質問のいくつかに基づいて、次のようにまとめました。
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 の特定の部分をロードし、テキスト ファイルをロードして、2 つを比較することになっています。残念ながら、私は 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>