xml删除一个节点

xml文件是这样的结构<dbGuest><user><name>张三</name><city>上海</city><email>ddd@163.com</email></u... xml文件是这样的结构
<dbGuest>
<user>
<name>张三</name>
<city>上海</city>
<email>ddd@163.com</email>
</user>
<user>
<name>王二</name>
<city>上海</city>
<email>abc@163.com</email>
</user>
<user>
<name>李四</name>
<city>上海</city>
<email>lll@163.com</email>
</user>
</dbGuest>
删除一个节点的程序

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath(".\\dbGuest.xml"));
XmlNodeList nodelist = xmldoc.SelectSingleNode("dbGuest").ChildNodes;//找到根节点,并读出其子节点列表

foreach (XmlNode xn in nodelist)
{
XmlElement xel = (XmlElement)xn;
XmlNodeList node = xel.GetElementsByTagName("name");
if(node.Count>0)
{
if (node[0].InnerText == "张三")
xel.RemoveAll();
break;
}
}
xmldoc.Save(Server.MapPath(".\\dbGuest.xml"));

删除的结果
<dbGuest>
<user>
</user>
<user>
<name>王二</name>
<city>上海</city>
<email>abc@163.com</email>
</user>
<user>
<name>李四</name>
<city>上海</city>
<email>lll@163.com</email>
</user>
</dbGuest>
问题是留下了一个空的<user></user>节点,在显示的数据时,那里就是一个空行,怎么彻底的删除一个user节点呢。
展开
 我来答
clock0120_cn
推荐于2016-11-05 · TA获得超过166个赞
知道答主
回答量:40
采纳率:0%
帮助的人:39.4万
展开全部
删除指定的XML节点

呵呵,今天总算有点成绩了。明白了如何添加XML节点,现在又搞懂了如何删除XML节点。下面说一下具体的方法:

下面是XML文档:

<?xml version="1.0" encoding="gb2312"?>
<data>
<list>
<url>cns!1pg3-qZraLhileWMaX48lbhg!246.entry</url>
<title>试用 FCKeditor 2.0 RC3</title>
<rq>6.13</rq>
</list>
<list>
<url>cns!1pg3-qZraLhileWMaX48lbhg!287.entry</url>
<title>比尔盖茨给马化腾的一封信</title>
<rq>6.6</rq>
</list>
<list>
<url>cns!1pg3-qZraLhileWMaX48lbhg!282.entry</url>
<title>溜之大吉 v1.0</title>
<rq>6.2</rq>
</list>
<list>
<url>cns!1pg3-qZraLhileWMaX48lbhg!281.entry</url>
<title>一个女孩儿的自恋</title>
<rq>6.1</rq>
</list>
</data>

要想删除指定的XML节点,必须要有指定的删除条件。在这儿,我选择二项:title、rq。

下面是实现过程(C#代码):

<% @ Page Language="c#" %>
<% @ Import Namespace="System.Xml" %>
<Script Language="C#" Runat="Server">
void Page_Load(){
string theTitle="试用 FCKeditor 2.0 RC3";
string theRq="6.13";
// 创建一个XmlDocument对象
string xmlPath=Server.MapPath("blog.xml");
XmlDocument xmlDoc=new XmlDocument();
// 加载指定的XML数据
xmlDoc.Load(xmlPath);
// 选择匹配 XPath 表达式的第一个 XmlNode
XmlNode root=xmlDoc.SelectSingleNode("data");
// 获取节点的所有子节点
XmlNodeList xnList=root.ChildNodes;
bool isFinded=false;
foreach(XmlNode xn in xnList){
if(xn.SelectSingleNode("title").InnerText==theTitle && xn.SelectSingleNode("rq").InnerText==theRq){
isFinded=true;
root.RemoveChild(xn);// 移除指定的子节点
xmlDoc.Save(xmlPath);
break;
}
}
// 显示结果
if(isFinded)
Response.Write ("已删除");
else
Response.Write ("未找到相应的记录");
}
</Script>

参考资料: http://spaces.msn.com/members/jeky/Blog/cns!1pg3-qZraLhileWMaX48lbhg!306.entry

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式