源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 778|回复: 23

[XML/RSS] XML 增、删、改和查示例

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2007-3-7 00:00:00 | 显示全部楼层 |阅读模式
1.已知有一个XML文件(bookstore.xml)如下:
[TR]
[TD]
[/TD]
[TD]

  
    Oberon's Legacy
    Corets, Eva
    5.95
  

[/TD][/TR]

  1、往节点中插入一个节点:
[TR]
[TD]
[/TD]
[TD]
   XmlDocument xmlDoc=new XmlDocument();
   xmlDoc.Load("bookstore.xml");
   XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找
   XmlElement xe1=xmlDoc.CreateElement("book");//创建一个节点
   xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
   xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性
   XmlElement xesub1=xmlDoc.CreateElement("title");
   xesub1.InnerText="CS从入门到精通";//设置文本节点
   xe1.AppendChild(xesub1);//添加到节点中
   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);//添加到节点中
   xmlDoc.Save("bookstore.xml");
[/TD][/TR]

  //================
  结果为:
[TR]
[TD]
[/TD]
[TD]

  
    Oberon's Legacy
    Corets, Eva
    5.95
  
  
    CS从入门到精通
    候捷
    58.3
  

[/TD][/TR]

2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点的文本修改为“亚胜”。
[TR]
[TD]
[/TD]
[TD]
    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");//保存。
[/TD][/TR]

  //=================
  最后结果为:
[TR]
[TD]
[/TD]
[TD]

  
    Oberon's Legacy
    Corets, Eva
    5.95
  
  
    CS从入门到精通
    亚胜
    58.3
  

[/TD][/TR]

  3、删除 节点的genre属性,删除 节点。
[TR]
[TD]
[/TD]
[TD]
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
   foreach(XmlNode xn in xnl)
   {
    XmlElement xe=(XmlElement)xn;
[/TD][/TR]


[TR]
[TD]
[/TD]
[TD]
    if(xe.GetAttribute("genre")=="fantasy")
    {
     xe.RemoveAttribute("genre");//删除genre属性
    }
    else if(xe.GetAttribute("genre")=="update李赞红")
    {
     xe.RemoveAll();//删除该节点的全部内容
    }
   }
   xmlDoc.Save("bookstore.xml");
[/TD][/TR]

  //====================
  最后结果为:
[TR]
[TD]
[/TD]
[TD]

  
    Oberon's Legacy
    Corets, Eva
    5.95
  
  
  
[/TD][/TR]

4、显示所有数据。
[TR]
[TD]
[/TD]
[TD]
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);//显示子节点点文本
    }
   }
[/TD][/TR]

留做参考,原文地址http://blog.yesky.com/75/richsee/1211075.shtml
2前台代码:html





   

        Main

        

        

        

        

   

   

        

            

               

                新邮件地址:

                邮件地址:

               

               

               

               

               

                姓名:

               

               

        

   


XML文件dbGuest.xml



  [U]

    aaa

    shanghai

    aaa@263.net

    ok

    2004-07-12T00:00:00.0000000+08:00

  [/U]

  [U]

    shaoazhd

    beijing

    sss@22.net

    afsa

    2004-7-12 15:07:39

  [/U]

  [U]

    Guset

    上海

    sfaf@22.net

  [/U]

  [U]

    Guset

    上海

    ss@22.net

  [/U]


using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Xml;

using System.Xml.XPath;

namespace DsAndXML.OpXMLFile



{


    /**////

    /// Main 的摘要说明。

    ///

    public class Main : System.Web.UI.Page


   

{

        protected System.Web.UI.WebControls.Button btnQuery;

        protected System.Web.UI.WebControls.Button btnChange;

        protected System.Web.UI.WebControls.Button btnDelete;

        protected System.Web.UI.WebControls.Button btnAdd;

        protected System.Web.UI.WebControls.DropDownList ddlName;

        protected System.Web.UI.WebControls.Label Label1;

        protected System.Web.UI.WebControls.Label Label2;

        protected System.Web.UI.WebControls.Label lbEmail;

        protected System.Web.UI.WebControls.TextBox tbNewMail;

        protected System.Web.UI.WebControls.Label Label3;

        protected System.Web.UI.WebControls.DataGrid dgShow;

   

        private void Page_Load(object sender, System.EventArgs e)


        

{

            // 在此处放置用户代码以初始化页面

            if(!IsPostBack)

            Bind();


        }

        private void Bind()


        

{

            DataSet ds = new DataSet();

            ds.ReadXml(Server.MapPath(".\\db\\dbGuest.xml"));

            dgShow.DataSource = ds.Tables[0].DefaultView;

            dgShow.DataBind();

            XmlDocument doc = new XmlDocument();

            doc.Load(Server.MapPath(".\\db\\dbGuest.xml"));

            XmlNodeList elemList = doc.GetElementsByTagName("Name");

            ddlName.Items.Clear();

            for(int i=0;i

        /// 设计器支持所需的方法 - 不要使用代码编辑器修改

        /// 此方法的内容。

        ///

        private void InitializeComponent()


        

{   

            this.btnQuery.Click += new System.EventHandler(this.btnQuery_Click);

            this.btnChange.Click += new System.EventHandler(this.btnChange_Click);

            this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);

            this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);

            this.Load += new System.EventHandler(this.Page_Load);


        }

        #endregion


        private void btnQuery_Click(object sender, System.EventArgs e)


        

{

            XmlDocument doc = new XmlDocument();

            doc.Load(Server.MapPath(".\\db\\dbGuest.xml"));

            lbEmail.Text = doc.SelectSingleNode("//User[Name='"+ddlName.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText;

         

        }


        private void btnChange_Click(object sender, System.EventArgs e)


        

{

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(Server.MapPath(".\\db\\dbGuest.xml"));

            XmlNodeList nodeList=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;//获取dbGuest节点的所有子节点

            foreach(XmlNode xn in nodeList)//遍历所有子节点


            

{

                XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型

            

                XmlNodeList node = xe.GetElementsByTagName("Name");

                if(node.Count>0)


               

{


                    if(node[0].InnerText==ddlName.SelectedItem.Text)


                    

{

                        XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点

                        foreach(XmlNode xn1 in nls)//遍历


                        

{

                            XmlElement xe2=(XmlElement)xn1;//转换类型

                            if(xe2.Name=="Email")//如果找到


                           

{

                                xe2.InnerText=tbNewMail.Text;//则修改

                                break;//找到退出来就可以了

                            }

                        }

                        break;

                    }

                }

               

            }

            xmlDoc.Save(Server.MapPath(".\\db\\dbGuest.xml"));

            Bind();

        }


        private void btnDelete_Click(object sender, System.EventArgs e)


        

{

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(Server.MapPath(".\\db\\dbGuest.xml"));

            XmlNodeList xnl=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;



            foreach(XmlNode xn in xnl)


            

{

                XmlElement xe=(XmlElement)xn;

                XmlNodeList node = xe.GetElementsByTagName("Name");

                if(node.Count>0)


               

{


                    if(node[0].InnerText==ddlName.SelectedItem.Text)

                        xe.RemoveAll();//删除该节点的全部内容

                    break;

                }

            }

            

            xmlDoc.Save(Server.MapPath(".\\db\\dbGuest.xml"));

            Bind();

        }


        private void btnAdd_Click(object sender, System.EventArgs e)


        

{

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(Server.MapPath(".\\db\\dbGuest.xml"));

            XmlNode root=xmlDoc.SelectSingleNode("dbGuest");//查找

            XmlElement xe1=xmlDoc.CreateElement("User");//创建一个[U]节点

            XmlElement xesub1=xmlDoc.CreateElement("Name");

            xesub1.InnerText="Guset";//设置文本节点

            xe1.AppendChild(xesub1);//添加到[U]节点中

            XmlElement xesub2=xmlDoc.CreateElement("City");

            xesub2.InnerText="上海";

            xe1.AppendChild(xesub2);

            XmlElement xesub3=xmlDoc.CreateElement("Email");

            xesub3.InnerText="ss@22.net";

            xe1.AppendChild(xesub3);



            root.AppendChild(xe1);//添加到节点中

            xmlDoc.Save(Server.MapPath(".\\db\\dbGuest.xml"));

            Bind();

        }

    }

}
回复

使用道具 举报

2

主题

2万

回帖

380

积分

中级会员

Rank: 3Rank: 3

积分
380
发表于 2022-10-25 08:51:26 | 显示全部楼层
挺不错的东西
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-2-5 14:42:20 | 显示全部楼层
我找了挺久终于找到了
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

59

积分

注册会员

Rank: 2

积分
59
发表于 2023-9-24 07:20:19 | 显示全部楼层
还可以不错
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

194

积分

注册会员

Rank: 2

积分
194
发表于 2024-3-2 05:10:55 | 显示全部楼层
啦啦啦啦啦德玛西亚
回复 支持 反对

使用道具 举报

13

主题

2万

回帖

97

积分

注册会员

Rank: 2

积分
97
发表于 2024-3-22 12:31:11 | 显示全部楼层
借款金额看了就立刻
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

66

积分

注册会员

Rank: 2

积分
66
发表于 2024-3-29 19:53:27 | 显示全部楼层
搞个免费的用用
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

207

积分

中级会员

Rank: 3Rank: 3

积分
207
发表于 2024-4-8 17:36:01 | 显示全部楼层
1312315458748777
回复 支持 反对

使用道具 举报

8

主题

2万

回帖

52

积分

注册会员

Rank: 2

积分
52
发表于 2024-4-29 13:39:32 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊啊啊啊
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

69

积分

注册会员

Rank: 2

积分
69
发表于 2024-5-10 00:09:33 | 显示全部楼层
哦哦哦哦哦哦哦哦哦
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2024-11-21 21:41 , Processed in 0.183618 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表