C#操作XML的方法
添加命名空间:
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的方法的更多相关文章
- php操作xml的方法
xml源文件 <?xml version="1.0 encoding="UTF-8"?> <humans> <zhangying> & ...
- PHP原生DOM对象操作XML的方法解答
创建一个新的XML文件,并且写入一些数据到这个XML文件中. /** 创建xml文件*/ $info = array(array('obj' => 'power','info' => 'p ...
- T-SQL操作XML 数据类型方法 "modify" 的参数 1 必须是字符串文字。
----删除关键字的同时也清理AP表中所有关联这个ID的数据 create trigger Trg_UpdateAppWordOnDelKeyWord on [dbo].[tbl_KeyWord] f ...
- PHP XML操作的各种方法解析
PHP提供了一整套的读取 XML文件的方法,很容易的就可以编写基于 XML的脚本程序.本章将要介绍 PHP与 XML的操作方法,并对几个常用的 XML类库做一些简要介绍. XML是一种流行的半结构化文 ...
- VBA中操作XML
OFFICE2007之后使用了OpenXml标准(伟大的改变),定制文本级的Ribbon可以通过修改压缩包内的xml文件来实现. 先学习一下VBA中操作XML的方法 先引用Microsoft XML ...
- php操作xml详解
XML是一种流行的半结构化文件格式,以一种类似数据库的格式存储数据.在实际应用中,一些简单的.安全性较低的数据往往使用 XML文件的格式进行存储.这样做的好处一方面可以通过减少与数据库的交互性操作提高 ...
- sqlserver 操作xml
1.xml.exist 输入为XQuery表达式,返回0,1或是Null.0表示不存在,1表示存在,Null表示输入为空 2.xml.value 输入为XQuery表达式,返回一个SQL ...
- SQL Server 操作XML数据
.xml.exist 输入为XQuery表达式,返回0,1或是Null.0表示不存在,1表示存在,Null表示输入为空 .xml.value 输入为XQuery表达式,返回一个SQL Server标量 ...
- C#操作XML方法集合
一 前言 先来了解下操作XML所涉及到的几个类及之间的关系 如果大家发现少写了一些常用的方法,麻烦在评论中指出,我一定会补上的!谢谢大家 * 1 XMLElement 主要是针对节点的一些属性进行操 ...
随机推荐
- 【WIN10】绑定x:Bind
在WP8.WP8中,我们知道有一个绑定{Binding},而在Win10中,新增了一个绑定{x:Bind} x:Bind :为编译时绑定 ,内存.内存相对于传统绑定都有优化 特性: 1.为强类型 ...
- [SQL] SQL学习笔记之基础操作
1 SQL介绍 SQL 是用于访问和处理数据库的标准的计算机语言.关于SQL的具体介绍,我们通过回答如下三个问题来进行. SQL 是什么? SQL,指结构化查询语言,全称是 Structured Qu ...
- 一些特殊的URI编码字符
字符 URL编码值 space %20 " %22 # %23 % %25 & %26 ( %28 ) %29 + %2B , %2C / %2F : %3A ; %3B < ...
- css中为了清除浮动经常用到的after样式
.cf:after { display: block; visibility: hidden; width:; height:; line-height:; font-size:; clear: bo ...
- Python ORM Storm 源码修改
安装 storm : pip install storm 目标:修改 Storm 源代码以支持自动重连文件:python安装目录/site-packages/storm/database.py 在41 ...
- BZOJ1565——[NOI2009]植物大战僵尸
1.题意:有一些点,点与点之间有保护关系,每个点都有一个权值,求能获得的最大值 2.分析:裸的最大权闭合图,用网络流进行求解,然后我们发现点与点之间的保护关系可能构成环,这样网络流是无法处理的,然后我 ...
- 12个非常实用的JavaScript小技巧
在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...
- 数据库Sharding的基本思想和切分策略
一.基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题.不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时 ...
- Python多进程(2)——mmap模块与mmap对象
本文介绍Python mmap模块与mmap对象的用法. mmap 模块提供“内存映射的文件对象”,mmap 对象可以用在使用 plain string 的地方,mmap 对象和 plain stri ...
- CPrimerPlus第十一章中的“选择排序算法”学习
C Primer Plus第十一章字符串排序程序11.25中,涉及到“选择排序算法”,这也是找工作笔试或面试可能会遇到的题目,下面谈谈自己的理解. 举个例子:对数组num[5]={3,5,2,1,4} ...