添加命名空间:

using System.Xml;

1,先创建一个BookModel类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace xmllianxi
{
class BookModel
{
/// <summary>
/// 所对应的课程类型
/// </summary>
private string bookType;
public string BookType
{
get { return bookType; }
set { bookType = value; }
}
/// <summary>
/// 书所对应的ISBN号
/// </summary>
private string bookISBN;
public string BookISBN
{
get { return bookISBN; }
set { bookISBN = value; }
}
/// <summary>
/// 书名
/// </summary>
private string bookName;
public string BookName
{
get { return bookName; }
set { bookName = value; }
}
/// <summary>
/// 作者
/// </summary>
private string bookAuthor;
public string BookAuthor
{
get { return bookAuthor; }
set { bookAuthor = value; }
}
/// <summary>
/// 价格
/// </summary>
private double bookPrice;
public double BookPrice
{
get { return bookPrice; }
set { bookPrice = value; }
}
/// <summary>
/// flag
/// </summary>
private string bookFlag;
public string BookFlag
{
get { return bookFlag; }
set { bookFlag = value; }
}
}
}

2,创建xml文件,及增删改查xml文件:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml; namespace xmllianxi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button5_Click(object sender, EventArgs e)//创建xml
{
XmlDocument doc = new XmlDocument();
//加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
XmlDeclaration xmldecl;
xmldecl = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(xmldecl);
//加入一个根元素
XmlElement xe = doc.CreateElement("", "bookstore", "");
doc.AppendChild(xe); //加入另外一个元素
XmlNode xn1 = doc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement xel1 = doc.CreateElement("book");//创建一个<book>节点
xel1.SetAttribute("Type", "必修课");//设置该节点genre属性
xel1.SetAttribute("ISBN", "1-1");//设置该节点ISBN属性
//创建子结点
XmlElement xelName1 = doc.CreateElement("title");
xelName1.InnerText = "C#从入门到精通";
XmlElement xelAuthor1 = doc.CreateElement("author");
xelAuthor1.InnerText = "张三";
XmlElement xelPrice1 = doc.CreateElement("price");
xelPrice1.InnerText = "";
xel1.AppendChild(xelName1);
xel1.AppendChild(xelAuthor1);
xel1.AppendChild(xelPrice1);
xn1.AppendChild(xel1); //加入另外一个元素
XmlNode xn2 = doc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement xel2 = doc.CreateElement("book");//创建一个<book>节点
xel2.SetAttribute("Type", "必修课");//设置该节点genre属性
xel2.SetAttribute("ISBN", "1-2");//设置该节点ISBN属性
//创建子结点
XmlElement xelName2 = doc.CreateElement("title");
xelName2.InnerText = "C#基础";
XmlElement xelAuthor2 = doc.CreateElement("author");
xelAuthor2.InnerText = "李四";
XmlElement xelPrice2 = doc.CreateElement("price");
xelPrice2.InnerText = "";
xel2.AppendChild(xelName2);
xel2.AppendChild(xelAuthor2);
xel2.AppendChild(xelPrice2);
xn2.AppendChild(xel2); //加入另外一个元素
XmlNode xn3 = doc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement xel3 = doc.CreateElement("book");//创建一个<book>节点
xel3.SetAttribute("Type", "必修课");//设置该节点genre属性
xel3.SetAttribute("ISBN", "1-3");//设置该节点ISBN属性
//创建子结点
XmlElement xelName3 = doc.CreateElement("title");
xelName3.InnerText = "Unity3D基础";
XmlElement xelAuthor3 = doc.CreateElement("author");
xelAuthor3.InnerText = "王五";
XmlElement xelPrice3 = doc.CreateElement("price");
xelPrice3.InnerText = "";
xel3.AppendChild(xelName3);
xel3.AppendChild(xelAuthor3);
xel3.AppendChild(xelPrice3);
xn3.AppendChild(xel3); //加入另外一个元素
XmlNode xn4 = doc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement xel4 = doc.CreateElement("book");//创建一个<book>节点
xel4.SetAttribute("Type", "必修课");//设置该节点genre属性
xel4.SetAttribute("ISBN", "1-4");//设置该节点ISBN属性
//创建子结点
XmlElement xelName4 = doc.CreateElement("title");
xelName4.InnerText = "计算机基础";
XmlElement xelAuthor4 = doc.CreateElement("author");
xelAuthor4.InnerText = "赵六";
XmlElement xelPrice4 = doc.CreateElement("price");
xelPrice4.InnerText = "";
xel4.AppendChild(xelName4);
xel4.AppendChild(xelAuthor4);
xel4.AppendChild(xelPrice4);
xn4.AppendChild(xel4); //保存创建好的XML文档
doc.Save(@"\Book.xml");
Select();
} public void Select()
{
//使用XmlDocument读取XML文件
XmlDocument doc = new XmlDocument();
doc.Load(@"\Book.xml");
XmlNode xn = doc.SelectSingleNode("bookstore");// 得到根节点bookstore
XmlNodeList nodelist = xn.ChildNodes;// 得到根节点的所有子节点
List<BookModel> bookModeList = new List<BookModel>();
foreach (XmlNode xn1 in nodelist)
{
BookModel bookModel = new BookModel();
XmlElement xe = (XmlElement)xn1;// 将节点转换为元素,便于得到节点的属性值
bookModel.BookType = xe.GetAttribute("Type").ToString();// 得到Type的属性值
bookModel.BookISBN = xe.GetAttribute("ISBN").ToString();
// 得到Book节点的所有子节点
XmlNodeList xml = xe.ChildNodes;
bookModel.BookName = xml.Item().InnerText;
bookModel.BookAuthor = xml.Item().InnerText;
bookModel.BookPrice = Convert.ToDouble(xml.Item().InnerText); if (xml.Item() != null)
{
bookModel.BookFlag = xml.Item().InnerText;
} bookModeList.Add(bookModel);
}
dataGridView1.DataSource = bookModeList;
} private void button1_Click(object sender, EventArgs e)
{
Select();
} private void button2_Click(object sender, EventArgs e)//增加
{
//加载文件并选出根结点
XmlDocument doc = new XmlDocument();
doc.Load(@"\Book.xml");
XmlNode xn = doc.SelectSingleNode("bookstore"); //用上面的方法,是向已有的文件上追加数据,如果想覆盖原有的所有数据,使用LoadXml方法
//直接把根结点选择出来了,后面不用SelectSingleNode方法选择根结点,直接创建结点即可
//XmlDocument doc = new XmlDocument();
//doc.LoadXml("<bookstore></bookstore>");//用这句话,会把以前的数据全部覆盖掉,只有你增加的数据 XmlElement xel = doc.CreateElement("book");//创建一个book结点
xel.SetAttribute("Type", "必修课");//设置节点属性
xel.SetAttribute("ISBN", "1-10");
//创建子结点
XmlElement xelName = doc.CreateElement("title");
xelName.InnerText = "数据库基础";
XmlElement xelAuthor = doc.CreateElement("author");
xelAuthor.InnerText = "李老头";
XmlElement xelPrice = doc.CreateElement("price");
xelPrice.InnerText = "";
xel.AppendChild(xelName);
xel.AppendChild(xelAuthor);
xel.AppendChild(xelPrice);
//最后把book结点挂接在根结点上,并保存整个文件
xn.AppendChild(xel);
doc.Save(@"\Book.xml");
Select();
} private void button3_Click(object sender, EventArgs e)//删除
{
XmlDocument doc = new XmlDocument();
doc.Load(@"\Book.xml");
XmlNode xn = doc.SelectSingleNode("bookstore");// 得到根节点bookstore
XmlNodeList nodelist = xn.ChildNodes;// 得到根节点的所有子节点
for (int i = ; i < nodelist.Count; i++)
{
XmlElement xe = (XmlElement)nodelist.Item(i);
if (xe.GetAttribute("ISBN") == "1-10")
{
xn.RemoveChild(xe);
if (i < nodelist.Count)
i = i - ;
}
}
doc.Save(@"\Book.xml");
Select();
} private void button4_Click(object sender, EventArgs e)//修改
{
XmlDocument doc = new XmlDocument();
doc.Load(@"\Book.xml");
XmlNodeList nodeList = doc.SelectSingleNode("bookstore").ChildNodes;//获取根节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn; //将子节点类型转换为XmlElement类型
if (xe.GetAttribute("ISBN") == "1-4")
{
xe.SetAttribute("ISBN", "update 1-4");
XmlNodeList xnls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in xnls)
{
XmlElement xe2 = (XmlElement)xn1;
if (xe2.Name == "author")
{
xe2.InnerText = "赵老头";
break;
}
}
break;
}
}
doc.Save(@"\Book.xml");
Select();
} private void button6_Click(object sender, EventArgs e)//添加一个子节点
{
XmlDocument doc = new XmlDocument();
doc.Load(@"\Book.xml");
XmlNodeList nodeList = doc.SelectSingleNode("bookstore").ChildNodes;//获取根节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn; //将子节点类型转换为XmlElement类型
//创建子结点
XmlElement xelFlag = doc.CreateElement("flag");
xelFlag.InnerText = "";
xe.AppendChild(xelFlag);
}
doc.Save(@"\Book.xml");
Select();
} private void button7_Click(object sender, EventArgs e)//删除一个子节点
{
XmlDocument doc = new XmlDocument();
doc.Load(@"\Book.xml");
XmlNodeList nodeList = doc.SelectSingleNode("bookstore").ChildNodes;//获取根节点的所有子节点
foreach (XmlNode xn in nodeList)
{
XmlElement xe = (XmlElement)xn;
XmlNodeList xnl = xe.ChildNodes;//获取xe子节点的所有子节点
foreach (XmlNode xn1 in xnl)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "flag")//如果找到
{
xe.RemoveChild(xe2);//则删除
}
}
}
doc.Save(@"\Book.xml");
Select();
}
}
}

C#操作XML的方法的更多相关文章

  1. php操作xml的方法

    xml源文件 <?xml version="1.0 encoding="UTF-8"?> <humans> <zhangying> & ...

  2. PHP原生DOM对象操作XML的方法解答

    创建一个新的XML文件,并且写入一些数据到这个XML文件中. /** 创建xml文件*/ $info = array(array('obj' => 'power','info' => 'p ...

  3. T-SQL操作XML 数据类型方法 "modify" 的参数 1 必须是字符串文字。

    ----删除关键字的同时也清理AP表中所有关联这个ID的数据 create trigger Trg_UpdateAppWordOnDelKeyWord on [dbo].[tbl_KeyWord] f ...

  4. PHP XML操作的各种方法解析

    PHP提供了一整套的读取 XML文件的方法,很容易的就可以编写基于 XML的脚本程序.本章将要介绍 PHP与 XML的操作方法,并对几个常用的 XML类库做一些简要介绍. XML是一种流行的半结构化文 ...

  5. VBA中操作XML

    OFFICE2007之后使用了OpenXml标准(伟大的改变),定制文本级的Ribbon可以通过修改压缩包内的xml文件来实现. 先学习一下VBA中操作XML的方法 先引用Microsoft XML ...

  6. php操作xml详解

    XML是一种流行的半结构化文件格式,以一种类似数据库的格式存储数据.在实际应用中,一些简单的.安全性较低的数据往往使用 XML文件的格式进行存储.这样做的好处一方面可以通过减少与数据库的交互性操作提高 ...

  7. sqlserver 操作xml

    1.xml.exist    输入为XQuery表达式,返回0,1或是Null.0表示不存在,1表示存在,Null表示输入为空 2.xml.value    输入为XQuery表达式,返回一个SQL ...

  8. SQL Server 操作XML数据

    .xml.exist 输入为XQuery表达式,返回0,1或是Null.0表示不存在,1表示存在,Null表示输入为空 .xml.value 输入为XQuery表达式,返回一个SQL Server标量 ...

  9. C#操作XML方法集合

    一 前言 先来了解下操作XML所涉及到的几个类及之间的关系  如果大家发现少写了一些常用的方法,麻烦在评论中指出,我一定会补上的!谢谢大家 * 1 XMLElement 主要是针对节点的一些属性进行操 ...

随机推荐

  1. [Scala] 快学Scala A3L3

    Actor 通过尽可能避免锁和共享状态,actor使得我们能够容易地设计出正确.没有死锁或争用状况的程序. Scala类库提供了一个actor模型的简单实现.AKKA是更高级的actor类库. 19. ...

  2. Ubuntu12.04安装lnmp环境笔记

    说明:笔记中使用的命令都是在root账户权限下执行的,如果使用的是普通账户,请注意在命令前加上“sudo”指令. 1.更新apt-get软件库: 命令:apt-get update 该操作的目的是确保 ...

  3. C和指针 第六章 指针6.2 6.3字符串中查找的两个版本

    int find_char(char **strings, char ch) { char *string; while ((string = *strings++) != NULL) { while ...

  4. 二叉树建立,遍历和二叉排序树的判断【c++】

    // test.cpp : Defines the entry point for the console application. // #include "stdafx.h" ...

  5. Git学习总结

    master主分支合并dev分支,代码 :git merge dev ,跳出如下界面.输入:wq,(:wq命令是LINUX命令,强制写入文件并结束),可以强制合并.但为什么会跳出该界面,我也没搞清楚. ...

  6. iOS 图形处理 Core Graphics Quartz2D 教程

    Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎.它提供了低级别.轻量级.高保真度的2D渲染.该框架可以用于基于路径的 绘图.变换.颜色管理.脱屏 ...

  7. java ArrayList 实现

    关于ArrayList的实现和原理,原文出处:http://www.cnblogs.com/ITtangtang/p/3948555.html 我觉得他写的非常好,真的很好. 做一个记录和总结吧 pu ...

  8. 三言两语之js事件、事件流以及target、currentTarget、this那些事

    厉害了我的哥--你是如此简单我却将你给遗忘   放假前再看某文档,里边提到两个我既熟悉又陌生的概念target.currentTarget,说他熟悉我曾经看到过这两个事件对象的异同处,说他陌生吧?很不 ...

  9. SQL数字转英文函数

    -- 数字转英文 -- ============================================= -- Author: qianjin036a -- Create date:06/1 ...

  10. 图文:通过sql server 连接mysql

    1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/connector/odbc/ 2.安装好后,在管理工具- ...