a.xml
<n>
<user>
<name>a1</name>
<qq>0</qq>
</user>
<user>
<name>a2</name>
<qq>0</qq>
</user>
</n>
后台
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlpath);
XmlNodeList nodeList = xmlDoc.SelectSingleNode("n//user").ChildNodes;//问题出在这里它只能循环两次因为user下只有两个子节要改成xmlDoc.SelectSingleNode("n") //遍历所有子节点
foreach (XmlNode xn in nodeList)
{
//将子节点类型转换为XmlElement类型
XmlElement xe = xn as XmlElement;
if (xe.Name == "name")
{
if (xe.InnerText.Trim() == "a1")
{
//确认qq节点近跟在name节点之后
(xe.NextSibling as XmlElement).InnerText = "123456";
}
}
}
xmlDoc.Save(xmlpath);问题是只能循环两次因为user下只有两个子节.要改成xmlDoc.SelectSingleNode("n")
但这就访问不到name了,不知如何做,请高手指教,我是菜liao
<n>
<user>
<name>a1</name>
<qq>0</qq>
</user>
<user>
<name>a2</name>
<qq>0</qq>
</user>
</n>
后台
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlpath);
XmlNodeList nodeList = xmlDoc.SelectSingleNode("n//user").ChildNodes;//问题出在这里它只能循环两次因为user下只有两个子节要改成xmlDoc.SelectSingleNode("n") //遍历所有子节点
foreach (XmlNode xn in nodeList)
{
//将子节点类型转换为XmlElement类型
XmlElement xe = xn as XmlElement;
if (xe.Name == "name")
{
if (xe.InnerText.Trim() == "a1")
{
//确认qq节点近跟在name节点之后
(xe.NextSibling as XmlElement).InnerText = "123456";
}
}
}
xmlDoc.Save(xmlpath);问题是只能循环两次因为user下只有两个子节.要改成xmlDoc.SelectSingleNode("n")
但这就访问不到name了,不知如何做,请高手指教,我是菜liao
xmlDoc.Load(xmlpath); XmlNodeList nodeList = xmlDoc.SelectSingleNode("n").ChildNodes;
XmlNodeList nodeList1 = xmlDoc.SelectSingleNode("n//user").ChildNodes;
//遍历所有子节点
foreach (XmlNode xn in nodeList)
{ foreach (XmlNode xn1 in nodeList1)
{
//将子节点类型转换为XmlElement类型
XmlElement xe = xn1 as XmlElement; if (xe.Name == "name")
{
if (xe.InnerText.Trim() == "a1")
{
//确认qq节点近跟在name节点之后
(xe.NextSibling as XmlElement).InnerText = "123456";
}
}
}
}
如果是a1可运行成功,如果是a2,a3的就改不了,也不提示.
现在我测了一下,xe.InnerText.Trim()的循环值都是a1 ,
如
<user>
<name>a2 </name>
<qq>0 </qq>
</user>
改为
<user>
<name>a2 </name>
<qq>123456 </qq>
</user>
XmlNodeList nodeList1 = xmlDoc.SelectSingleNode("n//user").ChildNodes;//因为user下只有两个子节.现在我不知如何?
直接获取所有的user节点
然后再循环判断user的子节点就可以了啊
xmlDoc.Load(xmlpath);
xmlDoc.SelectSingleNode("//user[name='a1']/qq").InnerText = "55555";
xmlDoc.Save(xmlpath);
真是高人,困我两天加一夜.谢谢了