Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 没有属性的XmlNode_C#_Asp.net - Fatal编程技术网

C# 没有属性的XmlNode

C# 没有属性的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[

伙计们,我用这段代码来获取一个XmlNode

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”)
——非常感谢我得到了它。