从XDocument中检索XML元素的序列

时间:2015-01-09 15:45:09

标签: c# xml

我有一个样本xml如下

<users>
  <user>
    <username>John</username>
    <password>password1</password>
    <id>1234</id>
  </user>
  <user>
    <username>Smith</username>
    <password>password2</password>
    <id>1234</id>
  </user>       
<users>

此XML文件像这样加载到XDocument对象中。

XDocument xDoc = XDocument.Load("Users.xml");

如何通过将用户名作为参数传递给它来检索密码和id元素的值,其中用户名在c#.net 4.0中是唯一的

1 个答案:

答案 0 :(得分:1)

您可以尝试使用以下代码段(方法)通过传递password作为参数从Xml doc中提取UserName

public string GetUserPassword(string UserName)
{
    XDocument xDoc = XDocument.Load("Users.xml");
    XmlNodeList _users = xDoc.SelectNodes("//users/user");
    string _pwd = null;
    foreach (XmlNode _node in _users)
    {
        if (_node.SelectSingleNode("username").InnerText == UserName)
        {
            _pwd = _node.SelectSingleNode("password").InnerText;
            break;
        }
    }
    return _pwd;
}

而且,类似于获得id

public string GetId(string UserName)
{
    XDocument xDoc = XDocument.Load("Users.xml");
    XmlNodeList _users = xDoc.SelectNodes("//users/user");
    string _id = null;
    foreach (XmlNode _node in _users)
    {
        if (_node.SelectSingleNode("username").InnerText == UserName)
        {
            _id = _node.SelectSingleNode("id").InnerText;
            break;
        }
    }
    return _id;
}

对于性能优化,您可以将这两个方法合并为一个,因此Xml文档只会加载一次,而方法将返回数组string[] _pwdAndId,其中_pwdAndId[0]对应于id和{{1密码。

_pwdAndId[1]

希望这会有所帮助。最好的问候,