检查XML文件并使用属性检查用户输入值

时间:2011-08-31 08:32:37

标签: c# asp.net linq-to-xml

我有一个Xml文件: -

<Users>
  <User Name="abc" Pass="asp"></User>
  <User Name="def" Pass="net"></User>
</Users>

我必须编写一个代码,其中在文本框中输入两个用户输入值,例如: - usernm和pass将根据特定节点的属性及其传递来检查以返回真值。

我想检查d输入usernm并传递属性名称,如果匹配将检查传递并返回真实的fasle值。

请在不使用迭代器和无数的情况下建议。

1 个答案:

答案 0 :(得分:1)

LINQ to XML几乎都基于迭代器,所以很难不使用它们......但我怀疑你想要这样的东西:

return doc.Descendants("User")
          .Any(x => (string) x.Attribute("Name") == targetName &&
                    (string) x.Attribute("Pass") == targetPassword);

或者将其分配给变量:

bool foundUser = doc.Descendants("User")
                    .Any(x => /* code as before */);

或者确实希望它为if条件:

if (doc.Descendants("User")
       .Any(x => /* code as before */))
{
}

我个人 提取到一个单独的方法(根据第一个例子可以只是return语句)使用局部变量来简化 - 我不喜欢我的if条件这么复杂。

这将确定任何User元素是否与相关属性匹配。当然,它没有提供有关匹配元素的任何信息。为此,您需要使用FirstOrDefault而不是Any,然后如果元素为非null,那就是第一个匹配。