Asp.net中C#增加删除查找与修改xml文件元素节点

已知有一个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);//显示子节点点文本
}
}

再分享一个 xml文件操作类

asp.net 对xml文件的读写,添加,修改,删除操作
下面有代码调试正确

 

 代码如下 复制代码

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;
private XmlDocument xmlDoc;

        //load xml file
        private void LoadXml()
        {
            xmlDoc=new XmlDocument();
            xmlDoc.Load(Server.MapPath("User.xml"));
        }

        //添加节点
        private void AddElement()
        {
           
            LoadXml();

            XmlNode xmldocSelect=xmlDoc.SelectSingleNode("user");
           
            XmlElement el=xmlDoc.CreateElement("person"); //添加person节点
            el.SetAttribute("name","风云"); //添加person节点的属性"name"
            el.SetAttribute("sex","女");   //添加person节点的属性 "sex"
            el.SetAttribute("age","25");   //添加person节点的属性 "age"
           
             XmlElement xesub1=xmlDoc.CreateElement("pass"); //添加person节点的里的节点
             xesub1.InnerText="123";//设置文本节点
             el.AppendChild(xesub1);
             XmlElement xesub2=xmlDoc.CreateElement("Address");
             xesub2.InnerText="昆明";//设置文本节点
             el.AppendChild(xesub2);

            xmldocSelect.AppendChild(el);
            xmlDoc.Save(Server.MapPath("user.xml"));

        }

       

        //修改节点
        private void UpdateElement()
        {
            LoadXml();
            XmlNodeList nodeList=xmlDoc.SelectSingleNode("user").ChildNodes;//获取bookstore节点的所有子节点
            foreach(XmlNode xn in nodeList)//遍历所有子节点
            {
                XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
                if(xe.GetAttribute("name")=="风云")//如果name属性值为“风云”
                {
                    xe.SetAttribute("name","发明");

                   
                    //如果下面有子节点在下走
                     XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
                    foreach(XmlNode xn1 in nls)//遍历
                    {
                       XmlElement xe2=(XmlElement)xn1;//转换类型
                        if(xe2.Name=="pass")//如果找到
                        {
                            xe2.InnerText="66666";//则修改
                            break;

                        }
                    }

                    break;
                }
            }
           xmlDoc.Save(Server.MapPath("user.xml"));//保存
        }

        //删出节点
        private void deleteNode()
        {
           
            LoadXml();
            XmlNodeList xnl=xmlDoc.SelectSingleNode("user").ChildNodes;
 
            foreach(XmlNode xn in xnl)
            {
                XmlElement xe=(XmlElement)xn;
               
                if(xe.GetAttribute("name")=="发明")
                {
                    //xe.RemoveAttribute("name");//删除name属性
                   // xe.RemoveAll();//删除该节点的全部内容
                    xe.ParentNode.RemoveChild(xe);
                   
                    break;
                }
               
            }
            xmlDoc.Save(Server.MapPath("user.xml"));//保存
        }

        private void showIt()
        {
            LoadXml();
            XmlNode xn=xmlDoc.SelectSingleNode("user");
 
            XmlNodeList xnl=xn.ChildNodes;
  
            foreach(XmlNode xnf in xnl)
            {
                XmlElement xe=(XmlElement)xnf;
//                Console.WriteLine(xe.GetAttribute("name"));//显示属性值
//                Console.WriteLine(xe.GetAttribute("sex"));
//
//                XmlNodeList xnf1=xe.ChildNodes;
//                foreach(XmlNode xn2 in xnf1)
//                {
//                    Console.WriteLine(xn2.InnerText);//显示子节点点文本
//                }

            }

        }
   
Xml的样式:

<?xml version="1.0" encoding="gb2312"?>
<user>
  <person>
  </person>
  <person name="风拉" sex="男" age="25">
    <pass>123</pass>
    <Address>大明</Address>
  </person>
  <person name="风云" sex="女" age="25">
    <pass>123</pass>
    <Address>昆明</Address>
  </person>
</user>

时间: 2024-11-02 21:07:25

Asp.net中C#增加删除查找与修改xml文件元素节点的相关文章

使用qt5操作xml文件,删除xml文件中的节点和修改xml文件节点的数据值

问题描述 使用qt5操作xml文件,删除xml文件中的节点和修改xml文件节点的数据值 使用qt5操作xml文件,删除xml文件中的节点和修改xml文件中节点的数据值. 那位大神知道,如果有代码就更好了. 谢谢 解决方案 QT XML文件 修改节点修改XML文件的节点属性值

C# 中 LISTVIEW 增加删除记录 排序 引用等实例用法

C# 中 LISTVIEW 增加删除记录 排序 引用等实例用法 ,有需要的朋友可以试一下. //增加项或列(字段) ListView1.Clear; ListView1.Columns.Clear; ListView1.Columns.Add; ListView1.Columns.Add; ListView1.Columns.Add; ListView1.Columns.Items[0].Caption:='id'; ListView1.Columns.Items[1].Caption:='ty

关于修改xml 文件中数值的问题

问题描述 关于修改xml 文件中数值的问题 10C 请问大神:如何修改xml文件中的数值为其一半,即 25,30,35.方法不限,最好有具体可执行的代码. #别的代码< void property=""exp""> < int>50 < /void> #别的代码< void property=""exp""> < int>60 < /void> #别的代码

jpa-osgi框架中使用JPA,怎样把persistence.xml文件中的数据库连接部分的配置独立出来

问题描述 osgi框架中使用JPA,怎样把persistence.xml文件中的数据库连接部分的配置独立出来 如题:osgi框架中使用JPA,怎样把persistence.xml文件中的数据库连接部分的配置单独拿出来,由于persistence.xml有多个,为方便连接不同的数据库,不使用spring框架时,怎样将驱动.url.用户名.密码独立成一个文件 解决方案 http://bbs.csdn.net/topics/391912381 解决方案二: 在一个properties文件中配置不同的驱

bat命令修改xml文件中某个参数的值

问题描述 bat命令修改xml文件中某个参数的值 用的下面的方法 set filename=C:UsersAdministratorDesktopccms_install_x86_windows_s1.0.3conftest2.xml set oldstr=pylGLZ set newstr=C:UsersAdministratorDesktopccms_install_x86_windows_s1.0.3upload setlocal enabledelayedexpansion for /f

c# mssql xml-C#中,读取数据库数据,写入xml文件

问题描述 C#中,读取数据库数据,写入xml文件 C#中,读取数据库数据,比如说表,存储过程,函数等等,然后把这些数据写成xml文件 存入本地硬盘,请各位大神教教我,,, 解决方案 你是 只需要读数据库的资料然后自己根据资料写xml 还是写个程序让机器自己根据从数据库中读出的资料然后生成相应的XML? 解决方案二: 参考一下这个http://bbs.csdn.net/topics/360167449 解决方案三: 读取数据库中的数据应该没有问题吧.写入xml参考:http://blog.csdn

iPhone6天气中怎么增加删除城市 苹果6天气中增加删除城市方法

1,在iphone6中我们找到"天气" 点击打开进入然后我们再找到 右下角的图标 就会进入到苹果6的天气的"城市列表"页面. 2,然后在进入的列表界面中我们找到右上角的"十" 就可以进入添加城市的搜索界面页面. 3,然后我们在搜索到的城市界面输入要添加天气之后点击搜索,然后找到了我们再点击增加即可. 关于删除天气中多余的城市我们只要在 城市列表页面 中找到要删除的城市然后向右滑动就会看到此城市有一个删除按钮了,我们点击"删除"

控件-asp.net中fileupload上传&amp;amp;gt;2G的文件时程序如何不蹦

问题描述 asp.net中fileupload上传>2G的文件时程序如何不蹦 在asp.net中,用fileupload控件上传大于2G文件时,程序自动就崩了,我已经在webconfig中设置了最大上传容量为2G,后台代码程序也提示了<2G,可是根本没提示文件过大,各位大神是什么原如何提示出文件过大因,求帮忙! 解决方案 超过服务器进程的内存上限了,另外文件上传后才知道有多大. 这么大的文件,建议部署activex分块上传. 解决方案二: 试试这个acx:http://www.cnblogs.

Linux中查找最近修改的文件命令

如果网站或者服务器出现什么问题,首先会想到服务器上的文件是否被修改,查找就会用到find命令,具体如下: 查找当前目录下.php文件中,最近30分钟内修改过的文件. find . -name '*.php' -type f -mmin -30 查找当前目录下.html文件中,最近30分钟内修改过的文件,的详细情况. find . -name '*.html' -type f -mmin -30 -ls 查找当前目录下,最近1天内修改过的常规文件. find . -type f -mtime -1