伙计我正在使用此代码获取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,我尝试了很多方法。但每当我尝试按键或索引访问属性时,它都会为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>
答案 0 :(得分:1)
username
和password
是元素,而非属性。再次使用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;