XML的解析和保存
1、XML(extensible markup language;XML )
定义:,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
XML语法规范: 标签(Tag)、嵌套(Nest)、属性(Attribute) [标签闭合、属性双引号、大小写敏感]
XML结构:父节点、子节点、兄弟节点
常见方法:DOM(文档对象模型)、Sax(事件驱动、XmlTextReader)、XmlSerializer(序列化)、Linq to XML
常用类型:XElement、XDocument、XAttribute
2、使用代码编写XML文件
[1]、注意:(1)、需要.Net Framework 3.5版本才能使用XDocument对象。
(2)、XDOcument类相比于XmlDocument类,配合Linq使用更方便
[2]、创建XML文档:
new XDocument对象
创建一个根节点XElement:构造方法中定义节点名字
加到XML文档中:Add() 方法
文档保存:Save() 方法
添加属性:new 一个Attribute、Add上
添加节点:new一个Element、可以设定Value给定值
[3]、读取XML文件
加载文档:XDocument.Load()方法
获取根节点:Root属性
元素签名与值(所以):Name、value属性
获取直接子元素:Element方法与Elements方法
读取属性:Attribute方法与Attributes方法,使用value
获取所以子节点:递归
实例1:
//创建Xdocument对象 XDocument xDoc = new XDocument(); //创建一个根节点,定义节点名字Student XElement xEle = new XElement("Student"); //加载到XML文档 xDoc.Add(xEle); //添加一个属性值, XAttribute xAttr = new XAttribute("Id","101"); xEle.Add(xAttr); //添加节点 XElement xEleName = new XElement("Name","dede"); XElement xEleAge = new XElement("Age","23"); XElement xEleGender = new XElement("Gender","男"); xEle.Add(xEleName,xEleAge,xEleGender); xEleAge.Value = "22"; //保存文档 xDoc.Save(@"d:\caoyi.xml"); |
*****************输出的XML文档************************* <?xml version="1.0" encoding="utf-8"?> <Student Id="101"> <Name>dede</Name> <Age>22</Age> <Gender>男</Gender> </Student>******************************************************* |
//读取XML文档
XDocument XDoc2 = XDocument.Load(@"d:\caoyi.xml");//获取根节点XElement Root = XDoc2.Root;//输出根节点的Name,ValueConsole.WriteLine("Root.Name:{0}",Root.Name);//输出:StudentConsole.WriteLine("Root.Value:{0}",Root.Value);//输出:dede22男Console.WriteLine("Root.ToString:{0}",Root.ToString());//输出:节点下的整个XML//获取子元素XElement xEle1 =Root.Element("Name");//获取子元素组Console.WriteLine(xEle1.Value);//输出:dedeforeach (XElement ele in Root.Elements()) { Console.WriteLine("{0}-{1}",ele.Name,ele.Value);} |
[3]、XML序列化
把对象序列化存储在本地文件中,using System.Xml.Serialization;,对象标示[Serializable]
实例:
List<Person> perList = new List<Person>() { new Person(){ Name="张三1",Age=19, Gender='男'}, new Person(){ Name="张三2",Age=19, Gender='男'}, new Person(){ Name="张三3",Age=19, Gender='男'}, new Person(){ Name="张三4",Age=19, Gender='男'}, new Person(){ Name="张三5",Age=19, Gender='男'}, new Person(){ Name="张三6",Age=19, Gender='男'}, }; using (FileStream file = new FileStream("xml.xml", FileMode.Create, FileAccess.Write)) { XmlSerializer ser = new XmlSerializer(typeof(List<Person>)); ser.Serialize(file, perList); } |
--------------------------
XmlDocument dom=new XmlDocument();
dom.LoadXml(字符串);
dom.save(文件名);
转载自:http://www.cnblogs.com/dedeyi/archive/2012/07/08/2582005.html
XML的解析和保存的更多相关文章
- 第四十六篇--解析和保存xml文件
新建assets资源文件夹,右键app --> new --> Folder --> Assets Folder,将info.xml放入此文件夹下面. info.xml <?x ...
- 通过正则表达式实现简单xml文件解析
这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...
- xml的解析与创建——bing到youdao导入文件的转换
首先是为了解决一个问题:如何将必应单词本中记录的单词转入到有道词典中去.实际上,必应词典可以导出xml文件,但是该文件有道词典无法解析.这里涉及到xml的解析和创建了. 代码如下: import ja ...
- android基础知识13:AndroidManifest.xml文件解析
注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...
- Android之AndroidManifest.xml文件解析
转自:Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文 ...
- 玩转iOS开发 - JSON 和 Xml 数据解析
前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...
- 03-IOSCore - XML及解析、Plist
一.XML 可扩展标记语言 是什么?是一段有规范的字符串, 用在哪?用在任何地方 语法: * 结点Node <结点名 属性名="属性值"> 结点内容 </结点名& ...
- xml数据解析
xml数据解析 在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.Kiss ...
- 类xml数据格式解析
需要解析一种类xml的数据文件,数据格式1如下: <head> //文件头 <type>xtype</type> <condition> key1=va ...
随机推荐
- getaddrinfo
gethostbyname和gethostbyaddr这两个函数仅仅支持IPv4,getaddrinfo函数能够处理名字到地址以及服务到端口这两 种转换,返回的是一个sockaddr结构的链表而不是一 ...
- linux运行级别[转自网络]
运行级别就是操作系统当前正在运行的功能级别.级别是从0到6,具有不同的功能.这些级别定义在/ect/inittab文件中.这个文件是init 程序寻找的主要文件,最先运行的服务是那些放在/etc/rc ...
- [转]Java 常用排序算法/程序员必须掌握的 8大排序算法
本文转自:http://www.cnblogs.com/qqzy168/archive/2013/08/03/3219201.html 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插 ...
- C#基础--基于POP3协议的邮件接收和基于STMP的邮件发送
最近在用outlook同步邮件.对邮件协议有一点兴趣.于是就去收集了一些资料,学习了一下如何通过.net来实现邮件的收发. 一:SMTP协议 1.什么是SMTP协议: SMTP目前 ...
- Java注解的使用
概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法. Java中的常见注解 JDK自带注解: @Override//覆盖父类的方法 @Deprecated//表示方法过时了 @ ...
- 第29章 跨战区大PK
29.1 策略模式 VS 桥梁模式 29.1.1 策略模式 [编程实验]用策略模式实现邮件发送 (1)有文本和超文本两种格式的邮件,将这两种格式封装成两种不同的发送策略. (2)文本邮件和超文本邮件分 ...
- ArrayList如何保证线程安全
ArrayList是线程不安全的,轻量级的.如何使ArrayList线程安全? 1.继承Arraylist,然后重写或按需求编写自己的方法,这些方法要写成synchronized,在这些synchro ...
- 维护MMO项目的随想
前提条件 近期我的工作内容是在维护一个历经几年的MMORPG大型项目,写下自己的一些感想 项目进度:游戏中基本的系统功能都有了,现阶段的主要工作就是修复系统的bug及重构部分系统. 维护老项目从何开始 ...
- 记录mysql的具体操作明细
在MySQL中使用init-connect与binlog来实现用户操作追踪记录 2014-07-28 20:55:38 分类: MySQL 前言:测试环境莫名其妙有几条重要数据被删除了,由于在binl ...
- java 27 - 6 反射之 通过配置文件运行类中的方法
在以前,如果我们想要调用一个类中的方法,只能这样子: 例: 有Cat和Dog两个类,里面有eat和run两个成员方法: public class Dog { public void eat() { S ...