加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML的解析和保存

发布时间:2020-12-16 08:26:42 所属栏目:百科 来源:网络整理
导读:1、XML(extensible markup language;XML ) 定义:,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML语法规范: 标签(Tag)、嵌套(Nest)、属性(Attribute) [标签闭合、属性双引号、大小写敏感] 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" ,
new Person(){ Name= "张三3" ,
new Person(){ Name= "张三4" ,
new Person(){ Name= "张三5" ,
new Person(){ Name= "张三6" ,
};
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读