xml文件如下:
<Root>
<Modules>
<Module ID="1" NAME="ksd" VERSION="1.0.0.0" FTPPath="" />
<Module ID="2" NAME="jf" VERSION="1.0.0.0" FTPPath="" />
<Module ID="js001" NAME="jf001" VERSION="1.0.0.0" FTPPath="" />
<Module ID="lj001" NAME="lj001" VERSION="1.0.0.0" FTPPath="" />
<Module ID="abc" NAME="abc.zip" VERSION="1.0.0.0" FTPPath="ftp://" />
</Modules>
</Root>代码如下:
XmlNodeList xnl = xmlDoc.SelectSingleNode("Root/Modules").ChildNodes;
foreach (XmlNode xn in xnl)
{
string ID = xn.Attributes["ID"].InnerText;
string VERSION = xn.Attributes["VERSION"].InnerText;
if (ID.Equals("abc") && VERSION.Equals("1.0.0.0"))
{
xn.RemoveAll();
}
}
删除之后xml
<Root>
<Modules>
<Module ID="1" NAME="ksd" VERSION="1.0.0.0" FTPPath="" />
<Module ID="2" NAME="jf" VERSION="1.0.0.0" FTPPath="" />
<Module ID="js001" NAME="jf001" VERSION="1.0.0.0" FTPPath="" />
<Module ID="lj001" NAME="lj001" VERSION="1.0.0.0" FTPPath="" />
<Module />
</Modules>
</Root>为什么删除之后还有个 <Module /> 求解决 !!!!!!!!!!!!
<Root>
<Modules>
<Module ID="1" NAME="ksd" VERSION="1.0.0.0" FTPPath="" />
<Module ID="2" NAME="jf" VERSION="1.0.0.0" FTPPath="" />
<Module ID="js001" NAME="jf001" VERSION="1.0.0.0" FTPPath="" />
<Module ID="lj001" NAME="lj001" VERSION="1.0.0.0" FTPPath="" />
<Module ID="abc" NAME="abc.zip" VERSION="1.0.0.0" FTPPath="ftp://" />
</Modules>
</Root>代码如下:
XmlNodeList xnl = xmlDoc.SelectSingleNode("Root/Modules").ChildNodes;
foreach (XmlNode xn in xnl)
{
string ID = xn.Attributes["ID"].InnerText;
string VERSION = xn.Attributes["VERSION"].InnerText;
if (ID.Equals("abc") && VERSION.Equals("1.0.0.0"))
{
xn.RemoveAll();
}
}
删除之后xml
<Root>
<Modules>
<Module ID="1" NAME="ksd" VERSION="1.0.0.0" FTPPath="" />
<Module ID="2" NAME="jf" VERSION="1.0.0.0" FTPPath="" />
<Module ID="js001" NAME="jf001" VERSION="1.0.0.0" FTPPath="" />
<Module ID="lj001" NAME="lj001" VERSION="1.0.0.0" FTPPath="" />
<Module />
</Modules>
</Root>为什么删除之后还有个 <Module /> 求解决 !!!!!!!!!!!!
if (ID.Equals("abc") && VERSION.Equals("1.0.0.0"))
{
xn.ParentNode.RemoveChild(xn);
}
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"c:\test.xml");
XmlNode deletedNode = xmlDoc.SelectSingleNode(@"/Root/Modules/Module[@ID='abc' and @VERSION='1.0.0.0']");
deletedNode.ParentNode.RemoveChild(deletedNode);
xmlDoc.Save(@"c:\result.xml");
{
string ID = xn.Attributes["ID"].InnerText;
string VERSION = xn.Attributes["VERSION"].InnerText;
if (ID.Equals("abc") && VERSION.Equals("1.0.0.0"))
{
xn.RemoveAll();
}
}
问题1 foreach 是只可访问的应该改成for
问题2 xn.RemoveAll(); 是删除当前子节点的所有 应该改为 xnl.Remove(xn);