文章详细
.net操作XML【查、增、改、删】实例源代码下载
 2017/9/1 15:41:08 评论:0人 阅读次数:6206

一、概述:

.net对于XML操作已经有比较多的代码在网上流传,但是能用的没有几个。所以在此专门做成了一个实例,以便后来人。下载地址在文章底部

本实例围绕以下XML的格式为基础。我相信只要学会了这篇文章,其它的只是大同小异。

.net操作XML【查、增、改、删】实例源代码下载
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0">
  <channel>
    <title>幸凡学习网</title>
    <description>是一个免费提供代码分享的一个网站,专注于.net、SEO、Div+css、javascript、SEO、经典电影,免费视频教程,欢迎光临</description>
    <language>zh_CN</language>
    <link>http://www.86y.org</link>
    <image>http://www.86y.org/images/logo.png</image>
    <author>幸凡</author>
    <item id="5">
      <title>777777</title>
      <description><![CDATA[   详细描述3 ]]> </description>
      <pubDate>2017/9/1 11:36:12</pubDate>
      <link>http://www.86y.org/art_detail.aspx?id=5</link>
    </item>
    <item id="4">
      <title>js操作cookie,有效期至当天晚上23点59分59秒的cookie</title>
      <description><![CDATA[   今天碰到一个需要设置cookies当天23:59:59时失效的效果...]]></description>
      <pubDate>2016/9/1 11:38:11</pubDate>
      <link> http://www.86y.org/art_detail.aspx?id=801 </link>
    </item>
    <item id="3">
      <title>js => 今天发现的一个新的js函数写法</title>
      <description><![CDATA[   今天在网上参观到一个写法,返回字符串每个字母的个数var]]></description>
      <pubDate>2016/8/27 9:33:12</pubDate>
      <link> http://www.86y.org/art_detail.aspx?id=800 </link>
    </item>
    <item id="2">
      <title>完美 全兼容 解决 文字两端对齐 justify</title>
      <description><![CDATA[   text-align:justify;所有浏览器都支持,text-justify之类]]></description>
      <pubDate>2016/8/26 11:05:43</pubDate>
      <link> http://www.86y.org/art_detail.aspx?id=799 </link>
    </item>
    <item id="1">
      <title>留一点专注的时间给孩子</title>
      <description><![CDATA[   每天早上五点半,我一般都会自动醒来,起床,洗漱,坐在]]></description>
      <pubDate>2016/8/24 14:46:24</pubDate>
      <link> http://www.86y.org/art_detail.aspx?id=798 </link>
    </item>
  </channel>
</rss>

二、核心代码:

1、查询XML

/// <summary>
/// 显示所有XML
/// </summary>
private void showIt()
{
    LoadXml();
    XmlNode xn = xmlDoc.SelectSingleNode("rss//channel");
    string result = "";
    XmlNodeList xnl = xn.ChildNodes;

    if (xnl.Count > 1)
    {
        foreach (XmlNode xn2 in xnl)
        {
            if (xn2.Name == "item")
            {
                XmlElement sans = (XmlElement)xn2;
                XmlNodeList san3 = sans.ChildNodes;
                if (san3.Count > 1)
                {
                    foreach (XmlNode sanss in san3)
                    {
                        if (sanss.Name == "title")
                            result += sanss.InnerText + "<br />";
                    }
                }
            }
        }
    }
    Response.Write(result);
}

 

2、增加一条XML记录

/// <summary>
/// 插入XML
/// </summary>
private void addIt() {
    LoadXml();
    XmlNode xmldocSelect = xmlDoc.SelectSingleNode("rss//channel");
    
    //xmldocSelect = (XmlNode)(xmldocSelect.SelectSingleNode("channel"));
    

    XmlElement el = xmlDoc.CreateElement("item"); //添加person节点
    el.SetAttribute("id", "5");

    XmlElement xesub1 = xmlDoc.CreateElement("title"); //添加person节点的里的节点 
    xesub1.InnerText = "123";//设置文本节点 
    el.AppendChild(xesub1);

    XmlElement xesub2 = xmlDoc.CreateElement("description");
    xesub2.InnerXml = "<![CDATA[   详细描述 ]]> ";//设置文本节点 
    el.AppendChild(xesub2);

    XmlElement xesub3 = xmlDoc.CreateElement("pubDate");
    xesub3.InnerText = "2017/8/31 16:36:12";//设置文本节点 
    el.AppendChild(xesub3);

    XmlElement xesub4 = xmlDoc.CreateElement("link");
    xesub4.InnerText = "http://www.86y.org/art_detail.aspx?id=837";//设置文本节点 
    el.AppendChild(xesub4);

    //获取需要插入前的对象 (我获取的是第一个item)
    XmlNodeList dss = xmldocSelect.ChildNodes;
    XmlNode xmlpre =(XmlNode) null;
    foreach (XmlNode xn2 in dss)
    {
        if (xn2.Name == "item")
        {                
            xmlpre = xn2;
            break;
        }
    }
    xmldocSelect.InsertBefore(el, xmlpre);
    xmlDoc.Save(Server.MapPath("~/download/Rss.xml")); 
}

 

3、修改一条XML记录

/// <summary>
/// 修改XML某一字段
/// </summary>
private void UpdateElement()
{
    LoadXml();
    XmlNode nodeList = xmlDoc.SelectSingleNode("rss//channel");
    //nodeList = (XmlNode)(nodeList.SelectSingleNode("channel"));

    foreach (XmlNode xn in nodeList)//遍历所有子节点 
    {
        XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
        if (xe.GetAttribute("id") == "5" && xe.Name== "item")//如果name属性值为“风云” 
        {
            //如果下面有子节点在下走 
            XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点 
            foreach (XmlNode xn1 in nls)//遍历 
            {
                XmlElement xe2 = (XmlElement)xn1;//转换类型 
                if (xe2.Name == "title")//如果找到 
                {
                    xe2.InnerText = "777777";//则修改 
                }

                if (xe2.Name == "description")//如果找到 
                {
                    xe2.InnerXml = "<![CDATA[   详细描述3 ]]> ";//则修改 
                }
                if (xe2.Name == "pubDate")//如果找到 
                {
                    xe2.InnerText = "2017/9/1 11:36:12";//则修改 
                }
                if (xe2.Name == "link")//如果找到 
                {
                    xe2.InnerText = "http://www.86y.org/art_detail.aspx?id=5";//则修改 
                }
            }
            break;
        }
    }
    xmlDoc.Save(Server.MapPath("~/download/Rss.xml")); //保存 
}

 

4、删除一条XML记录

/// <summary>
/// 删除某一节点
/// </summary>
private void deleteNode()
{

    LoadXml();
    XmlNode xnl = xmlDoc.SelectSingleNode("rss//channel");
    XmlNodeList xnl2 = xnl.ChildNodes;
    foreach (XmlNode xn in xnl2)
    {
        XmlElement xe = (XmlElement)xn;

        if (xe.GetAttribute("id") == "5" &&  xe.Name=="item")
        {
            //Response.Write(xe.GetAttribute("id"));
            //xe.RemoveAttribute("name");//删除name属性 
            xe.ParentNode.RemoveChild(xe);//删除该节点的全部内容
            break;
        }
    }
    xmlDoc.Save(Server.MapPath("~/download/Rss.xml")); //保存 
}

 

三、结语:

本实例纯属操作,逻辑没有控制,需要自己调整。

下载地址:链接:http://pan.baidu.com/s/1geNrRFX 密码:5svt

如需转载请注明出处:http://www.86y.org/art_detail.aspx?id=839【.net操作XML【查、增、改、删】实例源代码下载】幸凡学习网
0
 
相关文章
推荐文章
Created By Charry-May 3,2010
粤ICP备10093478号-1
顶部