用于修改站内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","RevengeBoy");//设置该节点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="RevengeBoy" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</price>
</book>
</bookstore>

2、修改节点:将genre属性值为“RevengeBoy“的节点的genre值改为“updateRevengeBoy”,将该节点的子节点<author>的文本修改为“亚胜”。

XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
if(xe.GetAttribute("genre")=="RevengeBoy")//如果genre属性值为“RevengeBoy”
{
xe.SetAttribute("genre","updateRevengeBoy");//则修改该属性为“updateRevengeBoy”

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="updateRevengeBoy" 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="updateRevengeBoy" 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")=="updateRevengeBoy")
{
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);//显示子节点点文本
}
}

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Xml;
using System.Xml.XPath;
using System.Runtime.InteropServices;

public partial class _Default : System.Web.UI.Page
{
     DataTable dtList ;
     DataRow dr;
    [DllImport("kernel32.dll")]
    static extern bool SetFileAttributes(string lpFileName, uint dwFileAttributes);

public DataTable MakeTable(string tbName)
    {
        // Create a DataTable.
        DataTable table = new DataTable(tbName);

// Create a DataColumn and set various properties.
        DataColumn column = new DataColumn();
        column.DataType = System.Type.GetType("System.String");
        column.AllowDBNull = false;
        column.Caption = "ProductId";
        column.ColumnName = "ProductId";

// Add the column to the table.
        table.Columns.Add(column);
        DataColumn column1 = new DataColumn();
        column1.DataType = System.Type.GetType("System.String");

column1.Caption = "Title";
        column1.ColumnName = "Title";

// Add the column to the table.
        table.Columns.Add(column1);
        DataColumn column2 = new DataColumn();
        column2.DataType = System.Type.GetType("System.String");

column2.Caption = "TagLine";
        column2.ColumnName = "TagLine";

// Add the column to the table.
        table.Columns.Add(column2);

DataColumn column3 = new DataColumn();
        column3.DataType = System.Type.GetType("System.String");

column3.Caption = "Image";
        column3.ColumnName = "Image";

// Add the column to the table.
        table.Columns.Add(column3);
        DataColumn column4 = new DataColumn();
        column4.DataType = System.Type.GetType("System.String");

column4.Caption = "ProductInfo";
        column4.ColumnName = "ProductInfo";

// Add the column to the table.
        table.Columns.Add(column4);

return table;
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            this.ProductId.Visible = false;
            this.ProductIdTB.Visible = false;
            Bind();
            this.DropDownList1.DataSource = dtList;
            this.DropDownList1.Items.Clear();
            this.DropDownList1.DataTextField = "Title";
            this.DropDownList1.DataValueField = "ProductId";
            this.DropDownList1.DataBind();
        }  
    }

private void Bind()
    {
        dtList = MakeTable("Product");
        XPathDocument doc = new XPathDocument(Server.MapPath("Helpme.xml"));
        XPathNavigator navigator = doc.CreateNavigator();

foreach (XPathNavigator nav in navigator.Select("/Products/Product"))
        {
            do
            {
                //Find the first element.
                if (nav.NodeType == XPathNodeType.Element)
                {
                    //Determine whether children exist.
                    if (nav.HasChildren == true)
                    {
                        dr = dtList.NewRow();
                        //Move to the first child.
                        nav.MoveToFirstChild();
                        //Loop through all the children.
                        do
                        {
                            if (nav.Name == "ProductId")
                                dr["ProductId"] = nav.Value;
                            if (nav.Name == "Title")
                                dr["Title"] = nav.Value;
                            if (nav.Name == "TagLine")
                                dr["TagLine"] = nav.Value;
                            if (nav.Name == "Image")
                                dr["Image"] = nav.Value;
                            if (nav.Name == "ProductInfo")
                                dr["ProductInfo"] = nav.Value;

} while (nav.MoveToNext());
                        dtList.Rows.Add(dr);
                    }
                }
            } while (nav.MoveToNext());

}
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string rootFolder = Server.MapPath("Helpme.xml");
        XmlDocument doc = new XmlDocument();
        doc.Load(rootFolder);
        XPathNavigator navigator = doc.CreateNavigator();
        foreach (XPathNavigator nav in navigator.Select("/Products/Product"))
        {
            do
            {
                    //Determine whether children exist.
                    if (nav.HasChildren == true)
                    {                
                        nav.MoveToFirstChild();
                        //Loop through all the children.
                        do
                        {
                            if (nav.Name == "ProductId")
                            {
                                if(nav.Value== this.DropDownList1.SelectedValue.Trim())
                                {
                                    do
                                    {
                                        if (nav.Name == "Title")
                                            nav.SetValue(this.titleTB.Text);                                      
                                        if (nav.Name == "TagLine")
                                            nav.SetValue(this.TagLineTB.Text);                                       
                                        if (nav.Name == "Image")
                                            nav.SetValue(this.ImageTB.Text);                                     
                                        if (nav.Name == "ProductInfo")
                                            nav.SetValue(this.ProductInfoTB.Text);
                                    }
                                    while (nav.MoveToNext());                                   
                                }      
                            }        
                        }
                        while (nav.MoveToNext());                      
                    }             
            }
            while (nav.MoveToNext());
        }
        SetFileAttributes(rootFolder, (uint)0);//修改文件属性,去掉所有属性!
        SetFileAttributes(rootFolder, (uint)128); // FILE_ATTRIBUTE_NORMAL
        doc.Save(rootFolder);
    }
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        this.TextBox1.Text = this.DropDownList1.SelectedValue.Trim();
        Bind();
        DataView dv = dtList.DefaultView;
        dv.RowFilter = "ProductId = '" + this.DropDownList1.SelectedValue.Trim() + "'";
        this.titleTB.Text = dv[0].Row["Title"].ToString();
        this.TagLineTB.Text = dv[0].Row["TagLine"].ToString();
        this.ImageTB.Text = dv[0].Row["Image"].ToString();
        this.ProductInfoTB.Text = dv[0].Row["ProductInfo"].ToString();       
    }
    protected void BtnIns_Click(object sender, EventArgs e)
    {
        this.ProductId.Visible = true;
        this.ProductIdTB.Visible = true;
        string rootFolder =Server.MapPath( "Helpme.xml");
        string  pid = this.ProductIdTB.Text;
        string tit = this.titleTB.Text;
        string tag = this.TagLineTB.Text;
        string Img = this.ImageTB.Text;
        string pinfo = this.ProductInfoTB.Text;
        if(pid != string.Empty&&tit != string.Empty&&tag !=string.Empty&&Img != string.Empty&&pinfo != string.Empty)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(rootFolder);

XmlNode root = doc.DocumentElement;
            XmlNode pr = doc.CreateElement("Product");

//Create  new nodes.
            XmlNode elem = doc.CreateElement("ProductId");
            elem.InnerText = pid;

XmlNode title = doc.CreateElement("Title");
            title.InnerText = tit;

XmlNode tl = doc.CreateElement("TagLine");
            tl.InnerText = tag;

XmlNode ima = doc.CreateElement("Image");
            ima.InnerText = Img;

XmlNode prin = doc.CreateElement("ProductInfo");
            prin.InnerText = pinfo;

//Add the node to the document.
            pr.InsertAfter(prin, pr.NextSibling);
            pr.InsertAfter(ima, pr.NextSibling);
            pr.InsertAfter(tl, pr.NextSibling);
            pr.InsertAfter(title, pr.NextSibling);
            pr.InsertBefore(elem, pr.FirstChild);
            root.InsertBefore(pr, root.FirstChild);

SetFileAttributes(rootFolder, (uint)0);//修改文件属性,去掉所有属性!
            SetFileAttributes(rootFolder, (uint)128); // FILE_ATTRIBUTE_NORMAL
            doc.Save(rootFolder);
        }

}
    protected void DelBtn_Click(object sender, EventArgs e)
    {
        string rootFolder =Server.MapPath( "Helpme.xml");
        XmlDocument doc = new XmlDocument();
        doc.Load(rootFolder);
        XPathNavigator navigator = doc.CreateNavigator();
        foreach (XPathNavigator nav in navigator.Select("/Products/Product"))
        {
            do
            {
                //Determine whether children exist.
                if (nav.HasChildren == true)
                {
                    nav.MoveToFirstChild();
                    //Loop through all the children.
                    do
                    {
                        if (nav.Name == "ProductId")
                        {
                            if (nav.Value == this.DropDownList1.SelectedValue.Trim())
                            {
                                nav.MoveToParent();
                                if (nav.Name == "Product")
                                    nav.DeleteSelf();
                            }

}

} while (nav.MoveToNext());
                }
                else
                {
                    nav.MoveToParent();
                    if (nav.Name == "Product")
                        nav.DeleteSelf();
                }

} while (nav.MoveToNext());

}
        SetFileAttributes(rootFolder, (uint)0);//修改文件属性,去掉所有属性!
        SetFileAttributes(rootFolder, (uint)128); // FILE_ATTRIBUTE_NORMAL
        doc.Save(rootFolder);
    }
}

当修改的是文件不在该站点下时 应该使用绝对路径..

原文:http://www.cnblogs.com/RevengeBoy/archive/2007/06/20/790235.aspx

asp.net 实现对xml文件的 读取,添加,删除,修改的更多相关文章

  1. linux下使用libxml2实现对xml文件的读取及查询

    由于项目需要,这两天在用C++做XML文件解析的工作.在linux下有个很方便的操作xml文件的库——libxml2,它提供了一套创建和查询xml文件的C语言的接口.这篇博客主要介绍如何使用libxm ...

  2. 使用jq的ajax实现对xml文件的读取

    之前一直在用json来传递数据,但是xml也是不可缺少的,于是开始了xml的征程.xml的一些属性啊之类的在菜鸟教程上列举的已经很详细了,但是却没有前段部分的获取教程,查询资料,遂懂: index.x ...

  3. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  4. JDOM方法实现对XML文件的解析

    首先要下载JDOM.jar包,下载地址:http://download.csdn.net/detail/ww6055/8880371 下载到JDOM.jar包之后导入到工程中去. 实例程序: book ...

  5. 用DOM4J包实现对xml文件按属性分离。

    转自本人博客:http://www.xgezhang.com/dom4j_xml_separata.html dom4j是一个Java的XML API.类似于jdom.用来读写XML文件的. dom4 ...

  6. Android平台中实现对XML的三种解析方式

    本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...

  7. Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密

    Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要 ...

  8. spring 框架的xml文件如何读取properties文件数据

    spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...

  9. C#的XML文件的读取与写入

    在设计程序的时候,对于一些变化性较强的数据,可以保存在XML文件中,以方便用户修改.尤其是对于一些软硬件的配置文件,很多都选择了用XML文件来存取.XML文件简单易用,而且可以在任何应用程序中读写数据 ...

随机推荐

  1. iOS获取图片的Base64String,兼容Android,java,web,jpg(jpeg),png

    呃呃呃……需求的来源又是同学,对!又是! 废话不哆嗦,怎么把一张图在iOS上转一个Base64String出来,稍微了解的,或者随便搜一下,都能搞定一大堆,但是!!!! 自己(iOS)转自己用,完全没 ...

  2. 多线程操作中为什么使用while而不是if来做判断状态是否就绪

    在多线程操作中,我们常常会遇到需要先判断信号量状态是否就绪,然后执行后续操作的场景.这里对状态的判断使用的是while而不是单线程下常用的if. 以下示例展示了一个简单的生产者-消费者模型:当队列满的 ...

  3. C++ Prime:decltype类型指示符

    decltype作用是选择并返回操作数的数据类型. decltype(f()) sum = x; // sum的类型就是函数f的返回类型 如果decltype使用的表达式是一个变量,则decltype ...

  4. 去掉eclipse js 错误提示

    1.去掉项目目录底下的.project文件中的以下部分:<buildCommand>      <name>org.eclipse.wst.jsdt.core.javascri ...

  5. 2015第45周五IE11实用开发工具摘录及设置IE缓存

    UI响应工具的作用 UI响应工具顾名思义就是查看UI响应时间的工具,通过这个工具可以帮助我们确定应用中的哪些组件占用了多少CPU时间,让我们之后可以更有针对性的进行优化,从而最大限度地改善应用性能,同 ...

  6. PHP按最大宽高等比例缩放图片类

    本来用phpthumb来缩略图片是十分方便的,但是最近在sae上写项目发现phpthumb在sae上保存文件时会出问题,想来实现一个简单的按最大宽高等比例缩放图片类也并不困难,于是便自己写了一个方便修 ...

  7. 织梦CMS(dedecms)栏目属性及系统封面模板、列表模板、文章模板区别和路径设置解答

    问题一:(织梦"栏目管理"的"常规选项"中3个栏目属性分析?) 织梦CMS的栏目属性分成三种, -->最终列表栏目 -->频道封面 -->外部 ...

  8. 在Windows Server 2012 上安装Exchange 2013 服务器

    前文:http://www.cnblogs.com/Liangw/archive/2011/09/19/2559944.html 安装准备: 1.加入一个存在的域(?如何建立一个域) 2.登录Wind ...

  9. std::numeric_limits<int>::max() error C2589: '(' : illegal token on right side of '::' 解决办法

    int max =std::numeric_limits<int>::max();     根据错误提示: f:\code\cpp\webspider\main.cpp(47) : war ...

  10. 10个经典的 Java main 方法面试题

    以下是笔者认为比较经典的关于Java main方法的面试题,与其说是Java面试题,其实也是Java的一些最基础知识问题,分享给大家,如有错误,请指出. 1.不用main方法如何定义一个类? 不行,没 ...