从 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 中是唯一的
您可以尝试以下代码片段(方法)通过将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 ;
}
希望这会有所帮助。此致敬意