簡體   English   中英

從XDocument檢索XML元素的序列

[英]Retrieve sequence of XML Elements from XDocument

我有一個示例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中,用戶名是唯一的

您可以嘗試使用以下代碼段(方法)通過將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 ;
}

希望這會有所幫助。 最好的祝福,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM