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 主要是针对节点的一些属性进行操 ...
随机推荐
- php代码规范—2
如何写出好的 PHP 代码? 在本文中,我们将探讨一些良好的编程习惯,这将帮助你避免代码中的缺陷. 1- 编写模块化代码 良好的PHP代码应该是模块化代码.PHP的面向对象的编程功能是一些特别强大的工 ...
- python操作mysql总结
Windows系统,python环境搭建. 下载并安装python2.7.11 https://www.python.org/downloads/ 下载并安装python的mysql包: http:/ ...
- Add Two Numbers LeetCode Java
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- coding.net就这么横空出世
各位新生们好: 看罢以上的开场白博客,我们也算初步完成了一个小程序——hello world.再进一步想下去,若我们程序写大了,要不停修改了(1000行代码不长,只争朝夕:-D),该如何保存呢?保存到 ...
- C++基础知识(4)---例外、异常处理
对Java熟悉的朋友们都很清楚,java中的异常处理机制是非常完善的.并且java强制使用异常处理,用户必须对有可能出现异常的情况进行处理. 在C++中并没有强制用户使用异常处理,但是使用异常处理将会 ...
- 【GoLang】golang 中 defer 参数的蹊跷
参考资料: http://studygolang.com/articles/7994--Defer函数调用参数的求值 golang的闭包和普通函数调用区别:http://studygolang.com ...
- android BitMap回收
第一种方法--及时回收bitmap内存: 一般而言,回收bitmap内存可以用到以下代码 if(bitmap != null && !bitmap.isRecycled()){ bit ...
- C# 获取时间差状态
/// <summary> /// 根据时间获取时间状态 /// </summary> /// <param name="dt"></pa ...
- springMVC 的工作原理和机制
工作原理上面的是springMVC的工作原理图: 1.客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web. ...
- CompletionService/ExecutorCompletionService/线程池/concurrent包
线程池 线程池的基本思想:线程频繁的创建.销毁会极大地占用系统资源,为了减少系统在创建销毁线程时的开销,线程池应运而生.线程池包括多个已创建的线程,当有任务要在新线程中执行时,将任务提交给线程池,线程 ...