C# 使用Linq到XML查询比较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 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,今天当我上笔记本电脑时,我将测试以下内容。