<?xml version="1.0" encoding="UTF-8"?>
<MyProject>
<ConfigVer version="2.0">
</ConfigVer>
<Project name="xml" dir="">
<Suit name="test" runlevel="0">
<Script dir="hello" dur="1" logtype="0" Enabled="true" />
<Script dir="hi" dur="1" logtype="0" Enabled="true" />
<Script dir="who" dur="1" logtype="0" Enabled="true" />
</Suit>
</Project>
</MyProject>我需要删除其中<Script dir="hi" dur="1" logtype="0" Enabled="true" />全部内容,应该怎么做!?
我的方法
foreach(XmlNode st in XXXX)
{if (ss.Attributes["dir"].InnerText=="hello"){}
else
{ss.removeall();}
}被删除的行都会留下Script,这是为什么呀?!应该怎么搞才能把这一行全部删掉呀。。急急!!!
谢谢了!!!
<MyProject>
<ConfigVer version="2.0">
</ConfigVer>
<Project name="xml" dir="">
<Suit name="test" runlevel="0">
<Script dir="hello" dur="1" logtype="0" Enabled="true" />
<Script dir="hi" dur="1" logtype="0" Enabled="true" />
<Script dir="who" dur="1" logtype="0" Enabled="true" />
</Suit>
</Project>
</MyProject>我需要删除其中<Script dir="hi" dur="1" logtype="0" Enabled="true" />全部内容,应该怎么做!?
我的方法
foreach(XmlNode st in XXXX)
{if (ss.Attributes["dir"].InnerText=="hello"){}
else
{ss.removeall();}
}被删除的行都会留下Script,这是为什么呀?!应该怎么搞才能把这一行全部删掉呀。。急急!!!
谢谢了!!!
removeall是删除当前结点的属性和字节点
如果使用 XML DOM ,那么可以定位到 Suit 是否 使用 selectNodes 带条件选择你要删除的子元素,之后循环 removeChild 。
public void OperatorXmlFile()
{
string XmlPath = @"D:\PSPLab\ZONE\winapp\winapp\Data\source.xml";
XmlDocument xdoc = new XmlDocument();
xdoc.Load(XmlPath); XmlNode xnode = xdoc.SelectSingleNode("MyProject/Project");
foreach (XmlNode xsubnode in xnode)
{
if (xsubnode.HasChildNodes == true)
{
foreach (XmlNode xn in xsubnode)
{
if (xn.Attributes["dir"].Value == "hello")
{
xsubnode.RemoveChild(xn);
}
}
}
}
}
doc.Load(filePath);
XmlNode node = doc.SelecetSingleNode("/MyProject/Project/Suit/Script[@dir='hi']");
node.Parent.RemoveChild(node);
doc.Save(filePath);