C# 没有属性的XmlNode
伙计们,我用这段代码来获取一个XmlNodeC# 没有属性的XmlNode,c#,asp.net,C#,Asp.net,伙计们,我用这段代码来获取一个XmlNode public XmlNode CheckUserWithPassword(String username, String password) { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(xmlPath); XmlNode node = xmlDocument.SelectSingleNode(String.Format("Users/User[
public XmlNode CheckUserWithPassword(String username, String password) {
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(xmlPath);
XmlNode node = xmlDocument.SelectSingleNode(String.Format("Users/User[username='{0}' and password='{1}']", username, password));
return node;
}
现在我得到的节点在这里
XmlNode user = users.CheckUserWithPassword(Session["username"].ToString(),oldpassword.Text);
if (user != null) {
user.Attributes["password"].Value = newpassword.Text;
现在,在访问属性时,这给了我一个空值,我已经尝试了许多方法。但每当我试图通过键或索引访问属性时,它都会给我null。
我已尝试打印此节点的outerXml。即使这样,也只显示没有标记的值。。
我的其他函数工作正常,并且返回了正确的节点,但是没有属性!!!帮帮我
谢谢
哦,这是我的XML和垃圾数据
<?xml version="1.0" encoding="utf-8"?>
<Users>
<User>
<name>Ibrahim</name>
<email>hdh@gmail.com</email>
<address>
</address>
<username>ok</username>
<password>ok</password>
</User>
<User>
<name>Aha</name>
<email>jhdhdd@gmail.com</email>
<address>EME DHA SECTOR</address>
<username>ok2</username>
<password>whatever</password>
</User>
<User>
<name>demo</name>
<email>demo@demo.com</email>
<address>sajdjahd</address>
<username>demo</username>
<password>demo</password>
</User>
<User>
<name>hello</name>
<email>hello@okd.com</email>
<address>
</address>
<username>pl</username>
<password>pl</password>
</User>
</Users>
易卜拉欣
hdh@gmail.com
好啊
好啊
啊哈
jhdhdd@gmail.com
EME DHA部门
ok2
无论什么
演示
demo@demo.com
萨伊德贾德
演示
演示
你好
hello@okd.com
pl
pl
用户名和密码是元素,而不是属性。再次使用SelectSingleNode
获取password
元素
if (user != null)
{
var passwordElement = user.SelectSingleNode("password") as XmlElement;
if (passwordElement != null)
passwordElement.InnerText = newpassword.Text;
}
您还可以通过使用带有不同XPath的单个SelectSingleNode
来缩短整个算法
var xpath = String.Format("Users/User[username='{0}' and password='{1}']/password", username, password);
var passwordElement = xmlDocument.SelectSingleNode(xpath) as XmlElement;
if (passwordElement != null)
passwordElement.InnerText = newpassword.Text;
发布一个xml示例。好吧,谢谢,它开始工作了。但是它没有更新XML文件中的密码,我已经检查了passwordElement是否为null,并且该行确实执行了,但是XML中的数据没有更新。有什么帮助吗?您是否正在保存XmlDocument?在内存中对XmlDocument进行修改对文件没有影响。
XmlDocument.Save(“c:\your\u filename\u here.xml”)
——非常感谢我得到了它。