C#Xml的三种创建方式(或者是两种?)和增删改查
一.Xml的创建方式
- Xmlwriter(流式读取,Stream)
写过了:https://www.cnblogs.com/dengzhekaihua/p/15438493.html 这种方法虽然快,但是只能写一遍,一次性全部写完,不方便进行修改
2.通过Xelement直接写xml(Linq to xml) 
- Xmlwriter(流式读取,Stream)
 
点击查看代码
	XElement xElement = new XElement(
			  new XElement("ProductType",
				  new XElement("BMW",
					  new XElement("Threshold", "Search", new XAttribute("Max", 100)),//后面这个是obj类型,写啥都行,输出的时候XAttribute.Value都是string类型
					  new XElement("Threshold", "Search", new XAttribute("Min", "20")),
					  new XElement("ROI", "Rect1"),
					  new XElement("Date", DateTime.Now.ToString("yyyy-MM-dd"))
					  ),
				   new XElement("Volvo",
					new XElement("Threshold", "Search", new XAttribute("Max", 100)),
					  new XElement("Threshold", "Search", new XAttribute("Min", "20")),
					  new XElement("ROI", "Rect2"),
					  new XElement("Date", DateTime.Now.ToString("yyyy-MM-dd"))
					   )));
			string iniPath = Application.StartupPath + "\\params";
			string xmlPath = iniPath + "\\ProductInfo.xml";
			//需要指定编码格式,否则在读取时会抛:根级别上的数据无效。 第 1 行 位置 1异常
			XmlWriterSettings settings = new XmlWriterSettings();
		        settings.Encoding = new UTF8Encoding(false);
		        settings.Indent = true;
		        XmlWriter xw = XmlWriter.Create(xmlPath, settings);//不用xmlwriter 用document写也一样的,但是writer快一点
		        xElement.Save(xw);
                        xw.Flush();
		        xw.Close();
3. 使用Xdocument建立(树结构,速度比writer慢,不推荐)
点击查看代码
          //使用XDocument创建xml
             System.Xml.Linq.XDocument xdoc = new XDocument();
             XDeclaration xdec = new XDeclaration("1.0", "utf-8", "yes");
             xdoc.Declaration = xdec;
              //添加根节点
             XElement rootEle = new XElement("school");
             xdoc.Add(rootEle);
             //给根节点添加子节点
             XElement classEle = new XElement("class");
             XAttribute attrClass = new XAttribute("No", 1);
             classEle.Add(attrClass);
             rootEle.Add(classEle);//其实就是看哪个Xelement.Add的,哪个加的哪个就是谁的子节点
             XElement classEle1 = new XElement("class1");
             XAttribute attrClass1 = new XAttribute("No", 1);
             classEle1.Add(attrClass1);
             rootEle.Add(classEle1);
             //添加子节点下的元素
             XElement stuEle = new XElement("student");
             XAttribute atrStu = new XAttribute("sid", "20180101");
             stuEle.Add(atrStu);
             classEle.Add(stuEle);
             //保存文件
             xdoc.Save("d:\\zzz\\TestB.xml");
二.Xml的读取
1.使用Xdocument进行读取
var doc =Xdocument.Load( 路径【string】 );
或者Xdocument doc=Xdocument.Load( 路径【string】 );
XDocument 属性
三.Xml的增加
1.可以用上面第三种里面的XElement.Add()去添加节点到对应的位置
//没写完
C#Xml的三种创建方式(或者是两种?)和增删改查的更多相关文章
- django之创建第8-1个项目-数据库之增删改查/数据库数据显示在html页面
		
1.为test.DB数据库预先创建下面数据 1 张三 16 2015-01-02 12 李四 17 2015-01-04 13 王五 14 ...
 - magento中Model创建以及该Model对于数据库的增删改查
		
本文是按照magento英文文档照做与翻译的. Model层的实现是mvc框架的一个巨大的部分.它代表了你的应用的数据,或者说大多数应用没有数据是无用的.Magento的Model扮演着一个重要的角色 ...
 - Mybatis框架基于注解的方式,实对数据现增删改查
		
编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...
 - ztree使用系列三(ztree与springmvc+spring+mybatis整合实现增删改查)
		
在springmvc+spring+mybatis里整合ztree实现增删改查,上一篇已经写了demo,以下就仅仅贴出各层实现功能的代码: Jsp页面实现功能的js代码例如以下: <script ...
 - ORM创建多表以及多表的增删改查
		
一. 多表的创建 1. 一对一 在哪个表中设置都行,但是添加数据的时候需要现在没有外键的表中添加数据 models.OneToOneField(to="表名",to_field=& ...
 - 将xml文件作为一个小的数据库,进行学生的增删改查
		
1.xml文件: <?xml version="1.0" encoding="UTF-8"?><Students> <studen ...
 - python利用xmlrpc方式对odoo数据表进行增删改查操作
		
# -*- encoding: utf-8 -*- import xmlrpclib #导入xmlrpc库,这个库是python的标准库. username ='admin' #用户登录名 pwd = ...
 - (一)Mybatis基本配置,Statement方式,动态代理增删改查
		
首先明白Mybatis是干什么的,之前使用jdbc操作数据库时候要写很多语句,获取光标,连接,获取具体对象进行相应操作,代码过于繁琐,所以现在有了Mybatis,它将这个操作整合在了一起,你不需要关心 ...
 - Android-Sqlite-OOP方式操作增删改查
		
之前写的数据库增删改查,是使用SQL语句来实现的,Google 就为Android开发人员考虑,就算不会SQL语句也能实现增删改查,所以就有了OOP面向对象的增删改查方式 其实这种OOP面向对象的增删 ...
 - Struts2之命名空间与Action的三种创建方式
		
看到上面的标题,相信大家已经知道我们接下来要探讨的知识了,一共两点:1.package命名空间设置:2.三种Action的创建方式.下面我们开始本篇的内容: 首先我们聊一聊命名空间的知识,namesp ...
 
随机推荐
- Fibonacci String(hdu 1708)
			
Fibonacci String Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
 - 湫湫系列故事——消灭兔子(hdu4544)
			
湫湫系列故事--消灭兔子 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
 - 自动化集成:Docker容器入门简介
			
前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述Docker基础用法. 一.Docker简介 1.基础 ...
 - 后缀树的建立-Ukkonen算法
			
参考: Ukkonen算法讲解 Ukkonen算法动画 Ukkonen算法,以字符串abcabxabcd为例,先介绍一下运算过程,最后讨论一些我自己的理解. 需要维护以下三个变量: 当前扫描位置# 三 ...
 - linux - 运维知识
			
使用nmap检测服务器端口安全性 https://blog.csdn.net/jayjaydream/article/details/108555250
 - [数据结构]链表LinkList
			
目录 1.3 链表 1.3.1 头插法建立单链表 1.3.2 限制链表长度建立单链表 1.3.3 尾插法建立单链表 1.3.4 按序号查找单链表 1.3.5 按值查找单链表 1.3.6 链表的插入 1 ...
 - 使用 IE 或Chrome等浏览器,通过网络抓包的形式,查看发送请求时的网络
			
要求: 使用 IE 或Chrome等浏览器,通过网络抓包的形式,查看发送请求时的网络 实现步骤: 1.打开 IE 浏览器,选择"开发者工具",切换到"网络"标签 ...
 - maven pom.xml 的 spring-boot-maven-plugin 红色报错 解决
			
解决方法,添加对应的spring boot 版本号即可
 - [ flask ] 解耦models(解决models文件太臃肿的问题)
			
问题描述 用博客项目来描述,我们在models中定义了用户表(User).文章表(Post).通知表(Notification).等等.随着我们开发的深入,添加的功能越来越多,到后期models文件会 ...
 - windows更改pip源(可用)
			
中国科学技术大学 : https://pypi.mirrors.ustc.edu.cn/simple 清华:https://pypi.tuna.tsinghua.edu.cn/simple 豆瓣:ht ...