添加命名空间:

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. SQL 的坑1 除法“”不可用“”

    今天工作中遇见 一问题,有5各部分,现要求5个部分各自的比例,SQL语句没有问题,后来还试了"加","减","乘","Round& ...

  2. UI第十一节——UIActivityIndicatorView

    - (void)viewDidLoad {    [super viewDidLoad];        // 创建一个UIActivityIndicatorView,大小是固定的    UIActi ...

  3. ssh框架整合-NoClassDefFoundError-NoSuchMethodError-遁地龙卷风

    (-1)写在前面 spring2.0.struts1.2.hibernate3.0.myeclipse8.5.tomcat6.0,整合之中出现了很多问题,前几天忙着整理毕业论文的资料,时间腾出来了,总 ...

  4. word20161213

    journal queue / 日志队列 journal quota / 日志配额 junction point / 交叉点 KDC, Key Distribution Center / 密钥分发中心 ...

  5. R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记(转)

    https://ask.julyedu.com/question/7490 labelImg:https://github.com/tzutalin/labelImg

  6. Linux Swap分区设定

    因为准备在linux上面安装Oracle数据库,据说swap分区小于4G容易失败,天啦噜的我连swap分区是啥都不是非常清楚, 大概有个印象吧,但先搞大了再说. 测试证明Ubuntu14默认的swap ...

  7. java 深入技术三(List)

    List ArrayList List接口 List接口的父接口-Collection List接口的重要子类- ArrayList -LikedList List接口不重要子类-Vector jav ...

  8. jqueyr eq get用法

    相信大部份人都会把这2个的用法搞错.仔细查看下API文档就可以知道.eq返回的是一个jquery对象,get返回的是一个html 对象数组.举个例子: <p style="color: ...

  9. unrecognized selector sent to instance

    今天长一见识(特此感谢小星星老湿-坏笑),凡是遇到“unrecognized selector sent to instance *******”的都是******方法没有,比如这种的错误: 可以尝试 ...

  10. (转).NET开发人员必备的可视化调试工具(你值的拥有)

    1:如何使用 1:点击下载:.NET可视化调试工具 (更新于2016-11-05 20:55:00) 2:解压RAR后执行:CYQ.VisualierSetup.exe 成功后关掉提示窗口即可. PS ...