<?xml version="1.0" encoding="utf-8"?>
<SoftXML ProductID="E027E-27032-0D23F-B2D12-AB041" Version="4.0">
<Menus>
<Menu>
<Name>文件</Name>
<Menu>
<Name>新建...</Name>
<Menu>
<Name>新建项目</Name>
</Menu>
</Menu>
<Menu>
<Name>打开项目(&O)</Name>
</Menu>
<Menu>
<Name>@-</Name>
</Menu>
<Menu>
<Name>退出</Name>
</Menu>
</Menu>
</Menus>
<Menus>
<Menu>
<Name>帮助</Name>
<Menu>
<Name>关于</Name>
<Menu>
<Name>关于公司</Name>
</Menu>
</Menu>
<Menu>
<Name>快速上手</Name>
</Menu>
<Menu>
<Name>@-</Name>
</Menu>
<Menu>
<Name>案例演示</Name>
</Menu>
</Menu>
</Menus>
</SoftXML>
我如何通过查找删除掉<Menus></Menus>这个节点。我写了段代码,但是删除后总留有一个<Menus></Menus>节点,并没有删干净!XmlNodeList list = doc.SelectNodes("//Menu//Name[.='文件']");
if (list != null)
{
for (int i = 0; i < list.Count; i++)
{
XmlElement el = (XmlElement)list[i];
if (el.InnerText.Trim().ToLower() == "文件")
{ if (el.ParentNode != null && el.ParentNode.ParentNode != null)
el.ParentNode.ParentNode.RemoveChild(el.ParentNode);
}
} }
doc.Save("D://SoftXML.xml");
if (list != null)
{
for (int i = 0; i < list.Count; i++)
{
XmlElement el = (XmlElement)list[i];
if (el.InnerText.Trim().ToLower() == "文件")
{ if (el.ParentNode != null && el.ParentNode.ParentNode != null)
{
XmlNode _ParentNode = el.ParentNode.ParentNode;
_ParentNode.RemoveChild(el.ParentNode);
if (_ParentNode.ChildNodes.Count == 0) _ParentNode.ParentNode.RemoveChild(_ParentNode);
}
}
} }
........自己多写写把
XmlNode node = doc.SelectSingleNode("//Menu[Name[.='新建项目']]");//这个是获得Menu节点if (node != null && node.ParentNode != null)
{
node.ParentNode.RemoveChild(node);
}如果你要删除Menus节点的话
直接
XmlNodeList list = doc.SelectSingleNode("//Menus");
foreach(XmlNode node in list)
{
node.ParentNode.RemoveChild(node);
}不知道你到底要干嘛,到底要删除什么,说清楚不管你删除什么节点,直接找到这个节点然后用ParentNode.RemoveChild就可以了
不要循环的删除~~