c# asp.net 删除XML中的某同类节点
<?xmlversion="1.0"encoding="utf-8"?><config><appSettings><addkey="111"value="111"/><a...
<?xml version="1.0" encoding="utf-8"?>
<config>
<appSettings>
<add key="111" value="111" />
<add key="222" value="222" />
<add key="333" value="333" />
</appSettings>
</config>
如何删除add节点行使XML变成下面的
<?xml version="1.0" encoding="utf-8"?>
<config>
<appSettings>
</appSettings>
</config>
麻烦各位指教下,我循环删除,但只要删除一行,就跳出循环了。 展开
<config>
<appSettings>
<add key="111" value="111" />
<add key="222" value="222" />
<add key="333" value="333" />
</appSettings>
</config>
如何删除add节点行使XML变成下面的
<?xml version="1.0" encoding="utf-8"?>
<config>
<appSettings>
</appSettings>
</config>
麻烦各位指教下,我循环删除,但只要删除一行,就跳出循环了。 展开
2个回答
展开全部
你选到父节点上然后用RemoveAll(),根本不需要循环删除。
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("1.xml");
XmlNode node = xmldoc.SelectSingleNode("//site[@name='aaa']");
node.RemoveAll();
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("1.xml");
XmlNode node = xmldoc.SelectSingleNode("//site[@name='aaa']");
node.RemoveAll();
追答
哦,属性也是它的子节点,所以都给remove了。
这样:
XmlNode node = xmldoc.SelectSingleNode("//site[@name='aaa']");
while (node.HasChildNodes)
{
node.RemoveChild(node.ChildNodes[0]);
}
展开全部
// 看看这样行不行,我测试是正常的。
[STAThread]
public static void Main(string[] args)
{
var document = new XmlDocument();
document.LoadXml(Xml);
XmlNodeList addNodes = document.SelectNodes("//add"); // 根据需要自行修改xpath
foreach (XmlNode addNode in addNodes)
{
addNode.ParentNode.RemoveChild(addNode);
}
Console.WriteLine(document.OuterXml);
Console.ReadKey();
}
static string Xml
{
get
{
return @"<?xml version=""1.0"" encoding=""utf-8""?>
<config>
<appSettings>
<add key=""111"" value=""111"" />
<add key=""222"" value=""222"" />
<add key=""333"" value=""333"" />
</appSettings>
</config>";
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询