C# 删除xml节点不彻底???急急急!!!有分啊!!!

来源:百度知道 编辑:UC知道 时间:2024/09/27 19:17:06
xml结构如下:
<NewDataSet>
- <ROW>
<CodeID>10000000</CodeID>
<FilterCitem />
<FilterSqlStr>ITEM_TYPE_FIELD=001;PRI_ITEMID_FIELD=1;</FilterSqlStr>
</ROW>
<NewDataSet>
程序如下:
private void DelRecordFromXml(string strCodeID)
{
string xmlPath = Server.MapPath("") + @"\model\DailyReport.xml";
xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
System.Xml.XmlNodeList xmlNL = xmlDoc.SelectSingleNode("NewDataSet").ChildNodes;
foreach(System.Xml.XmlNode xmlN in xmlNL)
{
System.Xml.XmlNodeList xmlSubNL = xmlN.ChildNodes;
foreach(System.Xml.XmlNode xmlSubN in xmlSubNL)
{
XmlElement xmlSubEle = (XmlElement)xmlSubN;
if ( xmlSubEle.Name=="CodeID" && xmlSubN.InnerText == strCodeID)
{
xmlN.RemoveAll();
xmlDoc.Save(xmlPa

删除节点跟你 xmlN 的方式一样就可以删除,
也就是 说,
要删除 XML 节点,你得通过 该节点的父节点 来删除.
也就是 你要 select 到 <NewDataSet> 这个节点
再用 这个节点 来 删除 <Row> 即可.

下面的代码,测试了一下,
我这边可以. 函数多了一个参数 指定 文件名.

public void DelRecordFromXml(string strCodeID, string xmlfile)
{
string xmlPath = xmlfile;
xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
System.Xml.XmlNodeList xmlNL = xmlDoc.SelectNodes("NewDataSet/ROW");
foreach (System.Xml.XmlNode xmlN in xmlNL)
{
XmlElement xe = (XmlElement)xmlN.SelectSingleNode("CodeID");
if (xe != null && xe.InnerText.Equals(strCodeID))
xmlN.ParentNode.RemoveChild(xmlN);

}
xmlDoc.Save(xmlPath);
}

你是用DATASET的吗,如果是的话好像不能删

- <ROW> 加一个-干什么?