从 XDocument 检索 XML 元素的序列

本文关键字:元素 XML XDocument 检索 | 更新日期: 2023-09-27 18:37:00

>我有一个示例 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 元素的值来检索密码和 id 元素的值,其中用户名在 c#.net 4.0 中是唯一的

从 XDocument 检索 XML 元素的序列

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

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,_pwdAndId[1]对应于密码。

public string[] GetPasswordAndId(string UserName)
{
    XDocument xDoc = XDocument.Load("Users.xml");
    XmlNodeList _users = xDoc.SelectNodes("//users/user");
    string[] _pwdAndId = new string[2];
    foreach (XmlNode _node in _users)
    {
        if (_node.SelectSingleNode("username").InnerText == UserName)
        {
            _pwdAndId[0] = _node.SelectSingleNode("id").InnerText;
            _pwdAndId[1] = _node.SelectSingleNode("password").InnerText;
            break;
        }
    }
    return _pwdAndId ;
}

希望这会有所帮助。此致敬意

相关文章: