(C#)xml的简单理解创建和读取
xml知识点清理:
一、文档规则
1.区分大小写。 
2.属性值必须加引号(单引号、双引号都可以),一般情况下建议使用使用双引号。 
3.所有标记必须有结束符号。 
4.所有空标记必须关闭。 
5.必须有且仅有一根元素。 
6.解析空白字符时,会按照实际内容输出,不会缩略。
7.标记名称约定: 
a.可以包含字母、数字、其他字符。 
b.不能以数字和下划线开头。 
c.不能以xml或者Xml之类的字符开头。 
d.不能包含空格
二、声明
xml声明标准语句:<?xml version="1.0" encoding="GB2312" standalone="yes"?> 
强调: 
1.“<?xml” 中的"<?"和"xml"中间不能有空格。 
2.”?>"之前可以有空格,也可以没有。 
3.enconding和standalone是可选属性,encoding默认值是"UTF-8",standalone默认值是"no"。 
4.常见的编码方式有: 
简体中文:GB2312 
繁体中文 :BIG5 
西欧字符:UTF-8,UTF-16 
5.standalone表示文档是否附带DTD文件。
三、xml属性 
因为数据既可以存储在子元素中也可以存储在属性中,那么何时用属性,何时用子元素,没有固定规则,但是建议:元
数据应该以属性的方式存储,而数据本身应该以元素的形式存储。 
使用属性会引发以下问题: 
1.属性不能包含多个值(子元素可以)。 
2.属性不容易扩展。 
3.属性不能描述结构(子元素可以)。 
4.属性很难通过DTD进行测试。
四、命名空间 
声明命名空间俩种方式: 
1.默认声明,所有元素不需要指定前缀,如: 
<schema xmlns="http://www.w3.org/2001/XMLschema"> 
<element name="diguonianzhu" type="string"/> 
…… 
</schema> 
2.明确声明,xmlns关键字与一个命名空间的URI的前缀相关联,所有元素都需要指定前缀,如: 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLschema"> 
<xsd:element name="diguonianzhu" type="string"/> 
     …… 
<xsd:/schema> 
强调:用来表示命名空间的URI并不被XML解析器调用,实际上并不去访问这个URI,它只是表示一个标识名字而已。
五、XML的语法
	-> XML文件,是一个纯文本文件
	-> XML结构是一个树状结构
		-> 文档描述
		-> 根元素
		-> 数据存储在标签元素中
		-> 标签时具有属性
六、 验证XML写的是否正确,使用浏览器将其打开
七、 XML元素的标签名可以随意的命名(和html)
		不能使用数字开头
		不能包含空格
保存数据,将具体数据放在标签中,
		让标签组合在一起表示一个具体的内容. 
		常常使用属性标记一些标签,属性一定是键值对,
		并且使用双引号将值括起来
	
8、 使用<!-- 表示注释 -->
八、 大小写敏感的
九、使用C#操作XML
	-> DOM,Document Object Model 文档对象模型
	-> 将文档看做成对象,而问但中的节点也是对象
		节点中的节点也是对象
	-> 使用DOM操作,常用的类
		XmlDocument		文档
		XmlElement		元素
		XmlAttribute	属性
		XmlText			文本
	-> 比较好的理解dom
11、Linq to XML
	-> XDocument
	-> XElement
	-> XAttribute
	-> XName
1.理解程序如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Xml; namespace CreateXML
{
class Program
{
static void Main(string[] args)
{
// 1.使用XMLDocument创建文档
XmlDocument myXml = new XmlDocument();
/*
使用myXml对象的create系方法创建需要的节点
*/
// 2.创建文档描述
XmlDeclaration xd = myXml.CreateXmlDeclaration("1.0","utf-8",null);
// 使用父节点.AppendChild(子节点)
myXml.AppendChild(xd);
// 3.创建根结点
XmlElement xmlRoot = myXml.CreateElement("personNode");
myXml.AppendChild(xmlRoot);
// DOM将所有的内容都看成对象,所以加载节点,就是在创建对象,并且将对象加到节点上
// 接下来创建内容(创建,追加) // 4.创建 person
XmlElement person = myXml.CreateElement("person");
// 5.追加
xmlRoot.AppendChild(person); // 6.在person下面追加,name age sex
XmlElement name = myXml.CreateElement("name");
person.AppendChild(name); XmlElement age = myXml.CreateElement("age");
person.AppendChild(age); XmlElement sex = myXml.CreateElement("sex");
person.AppendChild(sex); // 7.追加ID
XmlAttribute xid = myXml.CreateAttribute("id");
// 为 id 赋值,既然是对象,值和属性有关
xid.Value = "001";
// person.SetAttribute("id","001");
person.SetAttributeNode(xid); // 8.在 name age sex 中追加数据
XmlText xname = myXml.CreateTextNode("静水深流");
name.AppendChild(xname);
XmlText xage = myXml.CreateTextNode("18");
age.AppendChild(xage);
XmlText xsex = myXml.CreateTextNode("男");
sex.AppendChild(xsex);
// 最后用Save方法保存文档
myXml.Save("Persons.xml");
}
}
}
2.理解Dom结构:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Xml.Linq; namespace UseLinkToXmlToCreateXml
{
class Program
{
static void Main(string[] args)
{
XDocument xdoc = new XDocument();
// 创建根元素 追加数据
XElement root = new XElement("root");
xdoc.Add(root); XElement person = new XElement("person");
XAttribute xId = new XAttribute("id","001");
XElement name = new XElement("name");
XElement age = new XElement("age");
XElement sex = new XElement("sex"); // 给对象赋值
name.Value = "静水深流";
sex.Value = "男";
age.Value = "18"; person.Add(xId,name,age,sex); root.Add(person); xdoc.Save("LinkToXML.xml"); }
}
}
3.C#创建XML文档:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Xml.Linq; namespace FinalCreateXml
{
class Program
{
static void Main(string[] args)
{
#region 一个代码段节点
//new XDocument(new XElement("root",
// new XElement("person",
// new XAttribute("id", "001"),
// new XElement("name", "静水深流"),
// new XElement("age", 18),
// new XElement("sex", "男"))
// )).Save("per.xml");
#endregion Random rd = new Random();
XDocument xdoc = new XDocument(new XElement("personCollection"));
// 从文本文件或数据库中读取文件 #region 多个代码节点
//for (int i = 0; i < 100; i++)
//{
// xdoc.Root.Add(
// new XElement("person",
// new XAttribute("id", i + 1),
// new XElement("name", "静水深流" + 1),
// new XElement("age", rd.Next(24)),
// new XElement("sex", "男女"[rd.Next(2)])
// )
// );
//}
//xdoc.Save("100Persons.xml");
#endregion #region stringToXML
XDocument.Parse(@"
<root>
<person id=""001"">
静水深流
</person>
</root>
").Save("stringToXML.xml");
#endregion }
}
}
4.读取XML文档:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Xml.Linq; namespace ReadXML
{
class Program
{
static void Main(string[] args)
{
string path = "100Persons.xml"; // 加载xml文件
XDocument xdoc = XDocument.Load(path);
// 查找
// e 代表的就是节点对象
//var query = xdoc.DescendantNodes().Where(e=>{返回bool值的判断条件});
var query = xdoc
.DescendantNodes()
.Where(e=>{
//返回bool值的判断条件
XElement ele = e as XElement;
if (ele == null) return false;
XElement age = ele.Element("age");
XElement sex = ele.Element("sex");
if (age != null && sex != null)
{
int numAge = Convert.ToInt32(age.Value);
if (numAge >= 15 && numAge <= 18 && sex.Value == "男")
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}); XElement root = new XElement("root");
foreach (XElement item in query)
{
root.Add(item);
}
new XDocument(root).Save("Search.xml");
}
}
}
(C#)xml的简单理解创建和读取的更多相关文章
- MessageQueue 一 简单的创建和读取
		
创建一个队列,并写入数据 在读取出来 using System; using System.Collections.Generic; using System.Linq; using System.M ...
 - 在C#中创建和读取XML文件
		
1.创建简单的XML文件 为了便于测试,我们首先创建控制台应用程序,项目命名为CreateXml,Program.cs代码如下: 这样会在C盘根目录下创建data2.xml文件,文件内容为 using ...
 - input屏蔽历史记录    ;function($,undefined) 前面的分号是什么用处   JSON 和 JSONP 两兄弟   document.body.scrollTop与document.documentElement.scrollTop兼容    URL中的#      网站性能优化    前端必知的ajax    简单理解同步与异步    那些年,我们被耍过的bug——has
		
input屏蔽历史记录 设置input的扩展属性autocomplete 为off即可 ;function($,undefined) 前面的分号是什么用处 ;(function($){$.ex ...
 - Linq对XML的简单操作
		
前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...
 - 简单理解Struts2中拦截器与过滤器的区别及执行顺序
		
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
 - [转]简单理解Socket
		
简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html 题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...
 - 我们为之奋斗过的C#-----C#的一个简单理解
		
我们首先来简单叙述一下什么是.NET,以及C#的一个简单理解和他们俩的一个区别. 1 .NET概述 .NET是Microsoft.NET的简称,是基于Windows平台的一种技术.它包含了能在.NET ...
 - 对Jena的简单理解和一个例子
		
本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...
 - [转载]MongoDB学习 (四):创建、读取、更新、删除(CRUD)快速入门
		
本文介绍数据库的4个基本操作:创建.读取.更新和删除(CRUD). 接下来的数据库操作演示,我们使用MongoDB自带简洁但功能强大的JavaScript shell,MongoDB shell是一个 ...
 
随机推荐
- IOS NSURLRequest 设置 Header
			
https://my.oschina.net/wolx/blog/406092 工程中的请求,需要设置Header,请求令牌才访问,NSURLRequest 请求没有直接设置header 的方法,需要 ...
 - UISwitch——开关控件
			
开关的可配置选项很少,一般用于处理布尔值. 下面给出一个小Demo,创建两个开关,开关一可以控制开关二的可用与否,两者的关系就相当于水闸与水龙头的关系. #import "ViewContr ...
 - STM8建立IAR工程
			
STM8是意法半导体公司出的增强型八位单片机,性能比51单片机强大,而且价格便宜,在商业应用中很受欢迎 在STM8的开发工程中主要有两种开发工具链.第一是使用IAR开发环境,第二十使用cosmic+s ...
 - STM32标准IIC驱动
			
IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接 微控制器及其外围设备.也是目前很流行的通讯总线,使用IIC总线做产品能够很大 ...
 - iOS8 UISearchViewController搜索功能讲解
			
在iOS8以前我们实现搜索功能需要用到UISearchbar和UISearchDisplayController, 在iOS8之后呢, UISearchController配合UITableView的 ...
 - 一些JSON 教程
			
JSON 以下内容来自W3school. JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. ...
 - zepto animate
			
// Zepto.js // (c) 2010-2013 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...
 - Angular  - - ngClass、ngClassEven、ngClassOdd、ngStyle
			
这几个都关于样式及类名修改的,所以先把样式代码贴上吧. .red{color:red} .blue{color:blue} 写案例用到的样式就这么简单的两个,下面进入正题. ngClass ngCla ...
 - Nancy简单实战之NancyMusicStore(一):准备工作和搭建项目
			
开发环境 OS : Windows 10 10.0.14393 IDE : Visual Studio 2015 Community With Update 3 Database : PostgreS ...
 - 【转】OSX键盘快捷键
			
OS X 键盘快捷键 了解有关常见 OS X 键盘快捷键的信息.键盘快捷键是通过按下键盘上的组合键来调用 OS X 功能的一种方式. 若要使用键盘快捷键或按键组合,您可以同时按修饰键和字符键.例如,同 ...