XML(Extensible Markuo Language)可标记扩展语言。它是一种以简单文本格式存储数据的方式,可以被任何计算机读取。

XML文档里包含的元素都是可以自定义的。

1、XML文档声明,在文档的最开始。<?xml version="1.0"?>,其中version指的是版本。目前只有两种选择:1.0(第一版)和1.1(第二版)。

2、每个节点都是采用<node>……</node>的形式来定义。

3、节点里面可以嵌套节点,但节点之间不允许重叠。因此在父节点的结束标记之前就必须结束所有子元素。

XML名称空间,语法很简单<node xmlns:nsname="http://baidu.com"></node>这样就定义了一个名字为nsname,值为http://baidu.com的名称空间。在node节点的子节点中就可以运用这个名称空间,需要引用它,<nsname:subNode1></nsname:subNode1>。也可以使用默认名称空间<node xmlns="http://baidu.com"></node>这样这个节点里面的所有子节点都是默认属于这个名称空间的,除非添加不同的名称空间前缀显示指定。

下面说说XML文档的操作。(用C#操作)

首先是读取到目标xml文档:

XmlDocument document = new XmlDocument();

document.Load("xml文档路径");

接着便可以对读取到的文件进行操作了,可以进行的操作有,选取节点,增加节点,删除节点等。

选取:有两种方法SelectSingleNode(选取一个节点,多个的话,返回第一个)和SelectNodes(返回一个节点集合NodeList).

  xml节点的选择采用一种特殊的查询语言,XPath。常见的XPath操作有:document.DocumentElement.SelectNodes("xpath")

  1、选择当前节点                                                                                   .

  2、当前节点的上一层节点(父节点)                                                          ..

  3、在文档中选择所有名称为testNode的节点,不管他们的位置                          //testNode

  4、选取父节点名称为testNode本身名称为childNode的所有节点                        //testNode/childNode

  5、选取所有名称为testNode的节点,且他们的type属性值为 nodeClass             //testNode[@type='nodeClass']

6、选取根节点testNode                                                                         /testNode

  7、选取文档中的所有节点                                                                        //*

  8、选取节点testNode的前两个子节点                                                        //testNode/*[postion()<3]

添加节点:

添加节点前首先要创建一个节点

先创建一个节点,名称为book :XmlElement newBook=document.CreateElement("book");

book节点下有个子节点,书名title:XmlElement newTitle=document.CreateElement("title");

title里面包含的文本内容为professional C#:XmlText title = document.CreateTextNode("professional C#");

book包含一个属性为page,值为100:XmlAttribute page = document.CreateAttribute("page");    page.value="100";

现在将上述内容组成一个book节点 :newBook.AppendChild(newTitle);   newTitle.AppendChild(title);   newBook.Attributes.Append(page);

得到的结果为<book page="100"><title>professional C#</title></book>

然后将这个节点插入到xml文档中:   XmlElement root = document.DocumentElement;

root.InsertAfter(newBook,root.FirstChild);  //(InsertBefore,AppendChild都可以)

document.Sava("xml文档路径");

删除节点:

RemoveAll:这个方法删除节点上的一个子节点,他还会删除节点上的所有属性,因为他把属性也看成是子节点

RemoveChild:这个方法删除节点上一个子节点,返回从文档中删除的节点

XmlNode book = root.LastChild;

root.RemoveChild(book);

document.Save("xml文档路径");

XML文档的更多相关文章

  1. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

    Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...

  2. 【.net 深呼吸】使用二进制格式来压缩XML文档

    在相当多的情况下,咱们写入XML文件默认是使用文本格式来写入的,如果XML内容是通过网络传输,或者希望节省空间,特别是对于XML文档较大的情况,是得考虑尽可能地压缩XML文件的大小. XmlDicti ...

  3. 【Win 10应用开发】把文件嵌入到XML文档

    把文件内容嵌入(或存入)到XML文档中,相信很多朋友会想到把字节数组转化为Base64字符串,再作为XML文档的节点.不过,有人会说了,转化后的base64字符串中含有像“+”这样的符号,写入到XML ...

  4. 用ORM的思想操作XML文档,一个对象就搞定不要太简单。滚蛋吧!XmlDocument、XmlNode、Xml***……

    大家有没有这样的感受,一涉及XML文档操作就得百度一遍.是不是非!常!烦!.各种类型,各种方法,更别提为了找到一个节点多费劲.本来想写个XML操作的工具方法,写了两行一想既然XML文档是有规律的,如果 ...

  5. 【Win10 应用开发】自适应Toast通知的XML文档结构

    老规矩,在开始之前老周先讲个故事. 话说公元2015年7月20日,VS 2015发布.于是,肯定有人会问老周了,C#6有啥新特性,我学不来啊.学不来的话你应该检讨.老周比较保守地计算一下,学会C# 6 ...

  6. XML文档操作集锦(C#篇)

    在JSON没流行起来的时候xml一直作为程序存储配置信息的主流介质:特别是小型数据表方面还是不错的选择,所以经常涉及到的操作无非也就是增删改查,这篇博客主要是对这些对比较常用的操作做了个简单的总结 文 ...

  7. XmlReader和XElement组合之读取大型xml文档

    简介 在.NET framework 中存在大量操作xml数据的类库和api,但在.NET framework 3.5后我们的首选一般就是linq to xml. linq to xml操作xml数据 ...

  8. Java获取XML节点总结之读取XML文档节点

    dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的.要使用dom4j开发,需要下载导入dom4j相应的jar文件.官网下载:http://www. ...

  9. 使用sp_xml_preparedocument处理XML文档

    有时会在存储过程中处理一些XML格式的数据,所以会用到sp_xml_preparedocument,他可以将XML数据进行读取,然后使用 MSXML 分析器 (Msxmlsql.dll) 对其进行分析 ...

  10. 解析txt文本,dom4j工具输出为xml文档

    有如下一个ttl.txt文本文档,每一行用空格隔开的三段分别代表主谓宾, 要将它们输出为xml格式文档 工具:dom4j,jar包导入MyEclipse的Java Project工程 代码如下: pa ...

随机推荐

  1. oracle 执行计划查看

    1)  sql command窗口里explain plan for select * from emp: 2) select * from table(dbms_xplan.display);

  2. circular_buffer

    编程有时需要使用定长的容器(fixed size container).实现旋转容器可以像下面这样: std::vector<T> vec(size); vec[i % size] = n ...

  3. wiseinstall 制做安装包小记

    好久没写博客了..昨天未来的自己给自己托了个梦,说以后你肯定会忘了你今天白天是怎么制做安装包的,所以又来记录了..希望以后可以保持这个好习惯. 程序安装完后,可执行程序是 Wise32.exe 第一步 ...

  4. 终极解决maya渲染层丢材质,变线框等问题

    终极解决maya渲染层丢材质,变线框等问题 相信有很多同志在使用maya做灯光渲染的时候,经常能遇到渲染层的模型丢材质.变线框等问题,特别恶心.我也经常遇到,所以和大家分享一下我的解决或尽量避免的方法 ...

  5. Spring源码学习之: 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...

  6. 转载:JAVA的静态变量、静态方法、静态类

    静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象                                ...

  7. web三种跨域请求数据方法

    以下测试代码使用php,浏览器测试使用IE9,chrome,firefox,safari <!DOCTYPE HTML> <html> <head>     < ...

  8. Map以及Set的遍历(EntrySet方法,补充enumeration和Iterator的区别)

    public void mearge(Map map) { Map returnMap = new HashMap<>(); // 转换为Entry Set<Map.Entry< ...

  9. Sublime Text 2/3安装使用及常用插件

    一.介绍 Sublime Text 是一款较新的编辑器,它轻量.简洁.高效,良好的扩展性以及跨平台等特性,使得越来越多的开发人员喜爱.它是一款收费的商业软件,但可以免费无限制无限期的试用,只会偶尔提醒 ...

  10. Jackson的使用

    Jackson框架是基于Java平台的一套数据处理工具,被称为"最好的JavaJson解析器". Jackson框架包含了3个核心库:streaming,databind,anno ...