benben 发表于 2013-1-27 04:35:29

C# 删除指定的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://jeky.spaces.live.com/blog/cns!74F4D07FEB54694D!306.entry
页: [1]
查看完整版本: C# 删除指定的XML节点