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,Value

Console.WriteLine("Root.Name:{0}",Root.Name);//输出:Student

Console.WriteLine("Root.Value:{0}",Root.Value);//输出:dede22男

Console.WriteLine("Root.ToString:{0}",Root.ToString());//输出:节点下的整个XML

//获取子元素

XElement xEle1 =Root.Element("Name");//获取子元素组

Console.WriteLine(xEle1.Value);//输出:dede

foreach (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);

      }

转载自:http://www.cnblogs.com/dedeyi/archive/2012/07/08/2582005.html

时间: 07-17

XML的解析和保存的相关文章

android基础知识13:AndroidManifest.xml文件解析

1.重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息. 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所

【Java编程】SAX XML Parser解析、生成XML文件

1.优缺点 优点: SAX 从根本上解决了 DOM 在解析 XML 文档时产生的占用大量资源的问题.其实现是通过类似于流解析的技术,通读整个 XML 文档树,通过事件处理器来响应程序员对于 XML 数据解析的需求.由于其不需要将整个 XML 文档读入内存当中,它对系统资源的节省是十分显而易见的,它在一些需要处理大型 XML 文档以及性能要求较高的场合有起了十分重要的作用.支持 XPath 查询的 SAX 使得开发人员更加灵活,处理起 XML 来更加的得心应手. 缺点: 但是同时,其仍然有一些不足

解读郭神LitePal源代码-litepal.xml的解析

在開始使用LitePal时,要求在项目的assets文件夹下新建一个litepal.xml文件: <?xml version="1.0" encoding="utf-8"? > <litepal> <dbname value="Questionnaire"/> <version value="1"></version> <list> <mapping

解读郭神LitePal源码-litepal.xml的解析

在开始使用LitePal时,要求在项目的assets目录下新建一个litepal.xml文件: <?xml version="1.0" encoding="utf-8"?> <litepal> <dbname value="Questionnaire"/> <version value="1"></version> <list> <mapping c

Win10系列:VC++ XML文件解析

XML文件按照元素标记来存储数据,通过遍历这些元素标记可以得到XML文件中所保存的数据.在C++/CX的类库中并未定义用于解析XML文件的类,但C++提供了能解析XML文件的框架和类库,如msxml4.libxml.IXMLDOM和TinyXML等,在使用C++/CX编写应用程序时可以通过C++提供的框架和类库来解析XML文件.TinyXML是一个轻量级解析XML的框架,本节将介绍如何使用此框架来解析一个XML文件. TinyXML框架包含了以下的类和函数,通过使用这些类和函数可以方便地读取一个

类xml数据格式解析

需要解析一种类xml的数据文件,数据格式如下: <head> //文件头 <type>xtype</type> <condition> key1=value1 key2=value2 </condition> <mea> key3=value3 key4=value4 </mea> <xxxx>//多个 ... </xxx> </head> <data> //数据域,多个 p

NSURLSession(Get &amp; Post,JSON、XML数据解析,文件上传下载)

NSURLSession(Get & Post,JSON.XML数据解析,文件上传下载) 一.NSURLSession概述 NSURLSession是iOS7中新的网络接口,支持后台网络操作,除非用户强行关闭. NSURLSession使用步骤: 1. 新建NSURLSessionConfiguration,用于NSURLSession的配置 2. 新建NSURLSession 3. 新建NSURLSessionTask对象 4. 执行task 其中NSURLSessionConfigurati

通过正则表达式实现简单xml文件解析

这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node对象.xml文档树上的每一个节点都是一个Node对象,对象拥有title.attribute和text三个自身变量以及一个childrenNode集合. 一.编写Node类 import java.io.Serializable; import java.util.HashMap; import j

JAVA之XML文件解析

在Java.Android开发中,xml文件的解析很重要.本人使用过的xml文件解析的方式有两种,一种是DOM文档解析.还有一种是SAX. DOM是基于文档树结构的.SAX是基于事件驱动的.SAX则是遇到标签则触发工作的.当解析器发现元素开始.元素结束.文本.文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据.优缺点很明显:DOM对于大型文件的操作不好(因为它要先读入整个文档到内存中),SAX为了解决这样问题.不用事先调入整个文档,占用资源少:SAX解析器代码比DOM解析器代