谁对XML熟,教教我怎么删除XML这个节点

yizhilaoshu2 2010-04-30 03:19:27
<?xml version="1.0" encoding="gb2312"?>
<Root>
<Item ID="2">
<Name>ddddd</Name>
<Introduction>ddddddddddd</Introduction>
</Item>
<Item ID="4">
<Name>ddd</Name>
<Introduction>dssssssssss</Introduction>
</Item>
<Item ID="555">
<Name>dfgdfg</Name>
<Introduction>dfgdfgd</Introduction>
</Item>
<Item ID="555">
<Name>555</Name>
<Introduction>aaaaaaaaaaaaa</Introduction>
</Item>
<Item ID="2333">
<Name>dsfs</Name>
<Introduction>dfsdfd</Introduction>
</Item>
</Root>



我现在能取到id="2333"这个2333的值
<Item ID="2333">
<Name>dsfs</Name>
<Introduction>dfsdfd</Introduction>
</Item>
能不能通过这个 2333的值把这段节点删除掉









[AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public string DeleteAll(string id)(这个id就是2333的值)
{
try
{
XmlDocument xmlDoc = new XmlDocument();
//加载xml文件
xmlDoc.Load("TestWeb/SectionsXml.xml");
//查找根节点
XmlNode studentsNode = xmlDoc.SelectSingleNode("Root");
foreach (XmlNode userNode in studentsNode)
{
XmlElement xe = (XmlElement)userNode;
//如果当前<User>节点ID等于ListView当前选中项的索引
string aa = xe.GetAttribute("ID");

if (xe.GetAttribute("ID") == id)
{
//移除指定节点
//<Students>移除指定的<User>
studentsNode.RemoveChild(userNode);
//每次都要保存
xmlDoc.Save("TestWebSectionsXml.xml");
break;

}
else
{
return "0";
}
}
return "1";

}
catch
{
return "0";
}
}

...全文
198 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
doubleu2005 2010-04-30
  • 打赏
  • 举报
回复
Xml下一个学习对象
mars199 2010-04-30
  • 打赏
  • 举报
回复
楼上正解
wuyq11 2010-04-30
  • 打赏
  • 举报
回复
XmlDocument doc= new XmlDocument();
doc.Load("");
XmlNode no= doc.SelectSingleNode("//Root/Item[@ID='']");
if(no!=null)
{
XmlElement xe=(XmlElement)no;
xe.RemoveAll();
}
xrongzhen 2010-04-30
  • 打赏
  • 举报
回复
如果结构固定,直接用xPath更好些 如果不固定,假如你不知道处于哪级的那个节点,就只能用循环了SelectSingleNode("")
yizhilaoshu2 2010-04-30
  • 打赏
  • 举报
回复
O了,下班给分
Justin-Liu 2010-04-30
  • 打赏
  • 举报
回复
取到要删除节点的对象 然后remove掉就可以了 代码参考上面的
antony1029 2010-04-30
  • 打赏
  • 举报
回复
先用xpath查找到要访问的节点。然后对它操作。
a8511007 2010-04-30
  • 打赏
  • 举报
回复
来学习
g394594141 2010-04-30
  • 打赏
  • 举报
回复
/// <summary>
/// 删除一个节点
/// </summary>
/// <param name="Node"></param>
public void Delete(string Node)
{
//删除一个节点。
string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
}
jimh 2010-04-30
  • 打赏
  • 举报
回复
XmlDocument xmlDoc = new XmlDocument();
//加载xml文件
xmlDoc.Load("TestWeb/SectionsXml.xml");
//查找根节点
XmlNode root = xmlDoc.SelectSingleNode("/Root");
XmlNode toDelete = xmlDoc.SelectSingleNode("/Root/Item[ID='2333']");
if (root != null && toDelete != null)
{
root.RemoveChild(toDelete);
}
好了,这样就删除了指定id的节点,尽量使用xpath,不要老是写for循环。
yangfan1981 2010-04-30
  • 打赏
  • 举报
回复
其实问题关键是如何选择到这个节点

学习下xpath吧。

/root/item[@id=2333]
liji2009 2010-04-30
  • 打赏
  • 举报
回复
来接分
njw1028 2010-04-30
  • 打赏
  • 举报
回复
学习。。
liji2009 2010-04-30
  • 打赏
  • 举报
回复
已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
</bookstore>

1、往<bookstore>节点中插入一个<book>节点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点
xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性

XmlElement xesub1=xmlDoc.CreateElement("title");
xesub1.InnerText="CS从入门到精通";//设置文本节点
xe1.AppendChild(xesub1);//添加到<book>节点中
XmlElement xesub2=xmlDoc.CreateElement("author");
xesub2.InnerText="候捷";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("price");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);

root.AppendChild(xe1);//添加到<bookstore>节点中
xmlDoc.Save("bookstore.xml");
//===============================================
结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
<book genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</price>
</book>
</bookstore>

2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”
{
xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”

XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn1 in nls)//遍历
{
XmlElement xe2=(XmlElement)xn1;//转换类型
if(xe2.Name=="author")//如果找到
{
xe2.InnerText="亚胜";//则修改
break;//找到退出来就可以了
}
}
break;
}
}

xmlDoc.Save("bookstore.xml");//保存。
//==================================================
最后结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
<book genre="update李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>亚胜</author>
<price>58.3</price>
</book>
</bookstore>

3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;

foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("genre")=="fantasy")
{
xe.RemoveAttribute("genre");//删除genre属性
}
else if(xe.GetAttribute("genre")=="update李赞红")
{
xe.RemoveAll();//删除该节点的全部内容
}
}
xmlDoc.Save("bookstore.xml");
//===========================================
最后结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price>
</book>
<book>
</book>
</bookstore>

4、显示所有数据。
XmlNode xn=xmlDoc.SelectSingleNode("bookstore");

XmlNodeList xnl=xn.ChildNodes;

foreach(XmlNode xnf in xnl)
{
XmlElement xe=(XmlElement)xnf;
Console.WriteLine(xe.GetAttribute("genre"));//显示属性值
Console.WriteLine(xe.GetAttribute("ISBN"));

XmlNodeList xnf1=xe.ChildNodes;
foreach(XmlNode xn2 in xnf1)
{
Console.WriteLine(xn2.InnerText);//显示子节点点文本
}
}


JavaScript极速狂飙:组合拼接字符串的效率JavaScript极速狂飙:CSS样式表的背景渲染效率JavaScript面向对象的支持--(1)JavaScript面向对象的支持--(2)JavaScript面向对象的支持--(3)JavaScript面向对象的支持--(4)JavaScript面向对象的支持--(5)JavaScript面向对象的支持--(6)JavaScript精简学习1:基础知识JavaScript精简学习2:浏览器输出JavaScript精简学习3:图像JavaScript精简学习4:表单事半功倍之Javascript--(1)事半功倍之Javascript--(2)事半功倍之Javascript--(3)事半功倍之Javascript--(4)JavaScript教程--从入门到精通--(1)JavaScript教程--从入门到精通--(2)JavaScript教程--从入门到精通--(3)JavaScript教程--从入门到精通--(5)JavaScript教程--从入门到精通--(6)JavaScript教程--从入门到精通--(7)JavaScript教程--从入门到精通--(8)JavaScript教程--从入门到精通--(9)悟透JavaScript(李站老师)-编程的快乐悟透JavaScript(李站老师)-初看原型悟透JavaScript(李站老师)-对象素描悟透JavaScript(李站老师)-放下对象悟透JavaScript(李站老师)-构造对象悟透JavaScript(李站老师)-原型扩展用javascript操作 asp .net TextBox控件用javascript操作 asp .net Label控件用javascript操作 asp .net TextBox控件 下用javascript操作asp.net label控件 外一篇用javascript改变onclick调用的函数用JavaScript加密保护网站页面用Javascript检测网速的方法用Javascript评估用户输入密码的强度用JavaScript实现仿Windows关机效果用javascript实现进度条用javascript怎样实现图片模糊效果《ExtJS2.0实用简明教程》之Border区域布局《ExtJS2.0实用简明教程》之Ext类库简介《ExtJS2.0实用简明教程》之布局概述《ExtJS2.0实用简明教程》之获得ExtJS《ExtJS2.0实用简明教程》之应用ExtJSjs访问xml之遍历节点树js访问xml之创建xmlDocumentjs访问xml之根节点操作js访问xml节点操作(1)js访问xml节点操作(2) js访问xml节点对象属性和方法js访问xml删除一个book元素节点js访问xml之添加一个book元素节点【JS】兼容ff的加入收藏和设为首页【补】【sina】绕过sina博客的限制,超级BT执行Javascript【blog】介绍一下给sina博客加背景音乐的办法【Blog】再次解说博客加音乐的办法张孝祥JavaScript教程笔记:HTML基础张孝祥JavaScript教程笔记:HTML基础(二)张孝祥JavaScript教程笔记:HTML基础(三)-URL,图像标签,图像地图JavaScript经典效果集锦(一)JavaScript经典效果集锦(二)JavaScript经典效果集锦(三)Javascript技术技巧大全(一)Javascript技术技巧大全(二)Javascript技术技巧大全(三)Javascript技术技巧大全(四)Javascript技术技巧大全(五)JavaScript[对象.属性]集锦之一

110,529

社区成员

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

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

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