xml的节点删除问题!!!急!!!

haszj890828 2009-03-29 06:43:23
已知有一个XML文件(TodayMovie.xml)如下:
<?xml version="1.0" encoding="utf-8"?>
<MovieInfo>
<MovieName>
<name>sfdaf </name>
<Movie>
<Moviedirector>fsdaf </Moviedirector>
<Movieactor>weqfdsfasd </Movieactor>
<movieType>纪录片 </movieType>
<xmlmktbTime>2009-11-11 11:11:00 </xmlmktbTime>
<mktbDuration>22时22分 </mktbDuration>
<xmlPric>I:\Macx项目\Mac影院售票系统\WindowsFormsApplication1\Resources\赤壁 图片.png </xmlPric>
<xmlManx>1-5 </xmlManx>
<xmlkNum>444 </xmlkNum>
<xmlcolor>Color [White] </xmlcolor>
</Movie>
</MovieName>
<MovieName>
<name>sfafasdf </name>
<Movie>
<Moviedirector>dfasfd </Moviedirector>
<Movieactor>dsaf </Movieactor>
<movieType>动画片 </movieType>
<xmlmktbTime>2009-11-11 11:11:00 </xmlmktbTime>
<mktbDuration>22时22分 </mktbDuration>
<xmlPric>I:\Macx项目\Mac影院售票系统\WindowsFormsApplication1\Resources\非诚勿扰.png </xmlPric>
<xmlManx>2-1 </xmlManx>
<xmlkNum>333 </xmlkNum>
<xmlcolor>Color [White] </xmlcolor>
</Movie>
</MovieName>
</MovieInfo>
要将 <MovieName>节点下的所有子节点删除,改怎么做啊??急!!!
...全文
116 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
haszj890828 2009-03-29
  • 打赏
  • 举报
回复
其中包括<MovieName>这个节点!
haszj890828 2009-03-29
  • 打赏
  • 举报
回复
我要达到的是这种效果:
<?xml version="1.0" encoding="utf-8"?>
<MovieInfo>
<MovieName>
<name>sfdaf </name>
<Movie>
<Moviedirector>fsdaf </Moviedirector>
<Movieactor>weqfdsfasd </Movieactor>
<movieType>纪录片 </movieType>
<xmlmktbTime>2009-11-11 11:11:00 </xmlmktbTime>
<mktbDuration>22时22分 </mktbDuration>
<xmlPric>I:\Macx项目\Mac影院售票系统\WindowsFormsApplication1\Resources\赤壁 图片.png </xmlPric>
<xmlManx>1-5 </xmlManx>
<xmlkNum>444 </xmlkNum>
<xmlcolor>Color [White] </xmlcolor>
</Movie>
</MovieName>
</MovieInfo>
也就是删除一个MovieName节点,可能是我没有表述清楚吧!
01Byte空间 2009-03-29
  • 打赏
  • 举报
回复
两种方法
XmlDocument doc = new XmlDocument();
doc.Load(@"../TodayMovie.xml");

XmlNode xn = doc.SelectSingleNode("MovieInfo");
xn.RemoveAll();//方法一:删掉MovieInfo的所有子节点

// int i = xn.ChildNodes.Count;//方法二:删掉MovieName的所有子节点
//for (int j = 0; j < i; j++)
//{
// xn.ChildNodes [j].RemoveAll ();
//}

doc.Save(@"../TodayMovie.xml");
EveryCase 2009-03-29
  • 打赏
  • 举报
回复
顶~~~~~~~~~~~~~~
moleghosty 2009-03-29
  • 打赏
  • 举报
回复
up.
whowhen21 2009-03-29
  • 打赏
  • 举报
回复
给点正点的参考哈:

try
{
string name = "sfafasdf";//这是你要删除的电影的名称(Name的值)
XmlDocument myDoc = new XmlDocument();
myDoc.Load("TodayMovie.xml");
XmlNode oldNode = null;
XmlNode node = myDoc.DocumentElement;
foreach(XmlNode xmlNode in node.ChildNodes)
{
if(xmlNode.Name == "MovieName")
{
foreach(XmlNode movieNode in xmlNode.ChildNodes)
{
if(movieNode.Name == "name")
{
if(movieNode.InnerText = name)
{
movieNode.ParentNode.RemoveAllChild();//好像是这个吧,移除所有子项。
{
}
}
}
}
myDoc.Save("TodayMovie.xml");//保存
MessageBox.Show("电影删除成功!", "删除", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("抱歉,删除电影出现错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}

A海阔天空 2009-03-29
  • 打赏
  • 举报
回复
/// <summary>
/// 根据节点删除记录
/// </summary>
/// <param name="strSelectNodes">节点的XPath</param>
/// <param name="strSelectSingleNode">节点的名称</param>
/// <param name="strId">节点的值</param>
/// <returns>删除成功返回True,删除失败返回False</returns>
public Boolean DeleteXmlData(String strSelectNodes, String strSelectSingleNode, String strId)
{
try
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(this.m_xmlFilePath);

System.Xml.XmlNodeList xmlNL = xmlDoc.SelectNodes(strSelectNodes);
foreach (System.Xml.XmlNode xmlN in xmlNL)
{
XmlElement xe = (XmlElement)xmlN.SelectSingleNode(strSelectSingleNode);
if (xe != null && xe.InnerText.Equals(strId))
xmlN.ParentNode.RemoveChild(xmlN);
}

xmlDoc.Save(this.m_xmlFilePath);//保存删除后的XML文件
return true;
}
catch
{
return false;
}
}
IamHandsomeman 2009-03-29
  • 打赏
  • 举报
回复
你为什么不给

<MovieName> 加id的属性呢?可以这样:<MovieName id=No1>^^^YYY</MovieName><MovieName id=No2></MovieName>

我看你在发帖时候有两个相同的节点:<MovieName>
你要是想删除指定的一个节点的话,根据节点的ID删除!像数据库一样啊,唯一标志位
深海之蓝 2009-03-29
  • 打赏
  • 举报
回复
d为一个XmlNode对象
d.ParentNode.RemoveChild(d)
上边是删除整个d节点的,你先遍历menu的所有子节点,然后删除就可以了
xutao888 2009-03-29
  • 打赏
  • 举报
回复
DataSet ds = new DataSet();
ds.ReadXml(....);
foreach(DataTable tb in ds.Tables)
{
foreach(DataRow row in tb.rows)
{
row.Delete();
}
tb.Accept();
}
ds.Save(....);
koko0123 2009-03-29
  • 打赏
  • 举报
回复
XmlNode Nod = doc.SelectSingleNode("MovieInfo");
Nod.RemoveAll();

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧