Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq到XML查询比较XML_C#_Xml_Linq - Fatal编程技术网

C# 使用Linq到XML查询比较XML

C# 使用Linq到XML查询比较XML,c#,xml,linq,C#,Xml,Linq,我有以下XML文件: <?xml version="1.0" encoding="utf-8"?> <Users> <User> <Username> Admin </Username> <Password> 123 </Password> <User> </Users> 管理 123 当我找到用户名元素时,我需要在用户名元素中查找一个变量,然后我必须将它的密码与另一个变量中

我有以下XML文件:

<?xml version="1.0" encoding="utf-8"?>
<Users>
<User>
  <Username> Admin </Username>
  <Password> 123 </Password>
<User>
</Users>

管理
123
当我找到用户名元素时,我需要在用户名元素中查找一个变量,然后我必须将它的密码与另一个变量中的密码进行比较,并检查它们是否匹配


做以下事情的好方法是什么?如果您需要更改XML文件的格式,只要它包含用户名/密码就没有问题。

您不应该将密码存储在普通XML中;然而,我认为这是你想要的比较:

var userSought = "userA";
var passwordSought = "1234";

XDocument xml = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"),
    new XElement("Users",
        new XElement("User",
            new XElement("Username", "Admin"),
            new XElement("Password", "123")),
        new XElement("User",
            new XElement("Username", "userA"),
            new XElement("Password", "123"))
        ));

var userMatch = (from userElement in xml.Element("Users").Elements("User")
                  where userElement.Element("Username").Value == userSought
                  select new
                  {
                      Username = userElement.Element("Username").Value,
                      Password = userElement.Element("Password").Value
                  }).FirstOrDefault();

if(userMatch.Username == userSought && userMatch.Password == passwordSought)
    Console.WriteLine(userSought + " matches password " + passwordSought);
else
    Console.WriteLine(userSought + " has password " + userMatch.Password + " but is expected to be " + passwordSought);

您不应该在XML文件中存储纯文本密码。如果你不想处理一个真正的数据库,你应该看看类似SQLite的东西。我计划使用MD5哈希,我不会将密码存储为纯文本,但这不是一个问题,因为我已经弄明白了。这是谷歌将解决的一件非常简单的事情。谢谢Nick,今天当我上笔记本电脑时,我将测试以下内容。