C#的XML解析
来源:互联网 发布:淘宝抢购网 编辑:程序博客网 时间:2024/05/29 16:30
解析XML文件一般有两种模式:DOM模式和流模式。DOM模式的好处是允许编辑和更新XML文档,缺点是一次性加载整个文档到内存中。流模式则相反,内存中只有当前节点,但是是只读的,而且仅能向前,不能执行后导操作。
首先创建名为preson.xml的xml文件,所以方法都基于该xml文件,内容如下:
<?xml version="1.0" encoding="utf-8">
<user>
<preson name="fengyun" >
<pass>hutong</pass>
<address>yunnan</address>
</person>
<user>
1、XmlDocument
1.1 XmlNote与XmlElement的区别
在使用XmlDocument解析XML文件时,XmlNote和XmlElement经常被使用到的类,所以有必须详细了解这两个类的使用以及他们之间的关系。
- XmlNote是所有Node的父类。XmlElement继承自XmlLinkedNode,而XmlLinkedNode又继承自XmlNote,所以XmlNote也是XmlElement的父类
- XmlElement是具现类,可以直接实例化。XmlNote是抽象类,必须通过XmlDocument实例的CreateNode创建
- XmlElement拥有众多对Attribute操作的方法,可以方便的对属性进行读写
1.2 XmlDocument的方法
- XmlNote AppendChild(XmlNote newChild)——将指定的节点添加到当前元素的子节点列表的末尾
- XmlNote Clone()——克隆当前元素实例
- XmlNote CloneNote(bool deep)——根据deep判断是否克隆当前元素的子节点
- string GetAttribute(string name)——返回当前元素指定的属性值
- XmlAttribute GetAttributeNode(string name)——返回指定名称的属性节点
- bool HasAttribute(string name)——返回当前节点是否包含指定名称的属性
- void RemoveAttribute(string name)——根据指定的名称移除属性
- SetAttribute(string name, string value)——根据指定的名称设置属性值
- void WriteTo(XmlWriter w)——将当前节点写入XmlWriter
1.3XmlDocumnet的属性
- XmlAttributeCollection Attributes——返回当前元素属性列表
- XmlNodeList ChildNodes——返回当前节点的子节点列表
- bool HasChildNodes——返回当前节点是否包含子节点
- string InnerText——获取或设置节点及其所有子节点的串联值
- string InnerXml——获取或指定包含当前元素内所有子节点的、包含结构标志的XML文本
- string Name——获取节点的限定名
- string Value——获取或设置节点的值
1.4 通过xmlDocument创建xml文件
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = New XmlDocumnet();
xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "yes");
XmlElement root = xmlDoc.CreateElement("user"); //创建根节点
XmlElement preson = xmlDoc.CreateElement("preson") //创建子节点
preson.SetAttribute("name", "zhang"); //设置子节点属性
XmlElement pass = xmlDoc.CreateElement("pass"); //创建pass子节点
pass.InnerText = "hotong";
XmlElement address = xmlDoc.CreateElement("address");
address.InnerText = "beijing";
// 将各个子节点添加至节点中
preson.AppendChild(pass);
preson.AppendChild(address);
root.AppendChild(preson);
xmlDoc.AppendChild(root);
// 将xml文件保存至指定位置
xmlDoc.Save(@"d:user.xml");
}
}
1.5 通过XmlDocument解析Xml文件
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocumnet();
xmlDoc.Load(@"d:user.xml");
xmlNote root = xmlDoc.SelectSingleNode("user");
forech(XmlDocument preson in root.ChildNodes)
{
string name = preson.GetAttributes["name"].Value;
string pass = preson.ChildNode[0].InnerText;
string address = preson.ChildNode[1].InnerText;
}
}
}
2、XML序列化与反序列化
序列化是将内存中的对象按照某种序列保存至本地的一种编程模式,而反序列化则相反,是将本地的数据读取至内存中。
本文只介绍Xml序列化,其实序列化可以是二进制的序列化,也可以是其他格式的序列化。
Xml序列化与反序列化主要使用XmlSerializer类完成。首先在使用构造函数创建XmlSerializer对象时传递序列化对象的Type,然后使用Serializer方法实现实现序列化,使用Deserializer实现反序列化。
创建一个被序列化和反序列化的对象
public class Preson
{
public string Name {get; set;}
public string Age {get; set;}
public string Address {get; set;}
}
2.1 xml序列化
class Program
{
static void Main(string[] agrs)
{
Preson preson = new Preson();
preson.Name = "zhang";
preson.Age = "25";
preson.Address = "beijing;
// 创建本地文件,并将文件加载至流中
using (FileStream fs = new FileStream(@"d: est.xml", FileMode.Create))
{
// 创建XmlSerialier对象,并指定序列化对象的Type
XmlSerializer serializer = new XmlSeralizer(preson.GetType());
serializer.Serializer(fs, user); //将user对象数据序列化至fs流指定文件中
}
}
}
2.2 xml反序列化
class Program
{
static void Main(string[] agrs)
{
Preson preson = new Preson();
using (FileStream fs = new FileStream(@"d: est.xml", FileMode.Open))
{
XmlSerializer serializer = new XmlSerializer(preson.GetType());
// 反序列化fs流指定文件中的数据,Deserialier返回Object类型,所以进行类型转换
preson = (Preson)serializer.Deserializer(fs);
}
}
}
- C#的XML解析
- c# 解析xml 的方法
- C#中解析XML的内容
- C#关于xml数据的解析
- C#解析带属性的XML
- C#对XML的解析(笔记)
- C# 解析简单的Xml文件
- C#解析带属性的XML
- C#解析 居委会的 XML 文件方法
- C#解析XML文件
- C#解析XML
- C#解析XML文件
- C# xml解析
- C#解析XML文件
- C#解析XML字符串
- C# 解析XML
- C#解析XML文件
- C#解析XML文件
- 容器的排序-2
- javascript jquery 仿京东左侧悬浮框效果
- ArchLinux使用HP打印机
- import javax.servlet.http.HttpSession;异常
- Opencv中矩阵排序sort函数
- C#的XML解析
- 选择困难不用慌,思维导图帮你忙!
- Hibernate查询技术
- 股票利息
- Android中PopupWindow结合项目讲解
- Windows 下Npm和NodeJS升级
- hdu 5713 图去多少条边变为指定连通块 dp ...
- unity timeline使用手册
- ADO.NET