C# XML 反序列化解析
自己用。记录一下!
用于配置文件的解析,可以用来设置配置。不用修改程序里参数。
用微软的XML 解析器来解析的。
1. Xml文件
文件名称:TestConfig.xml
<?xml version="1.0"?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<PowerLine>
<Version>1.01</Version>
<FieldNum>10</FieldNum>
<Fields>
<Field name="STARTID">起始ID</Field>
<Field name="FNODE">起点</Field>
<Field name="TNODE">终点</Field>
<Field name="POWERID">线路ID</Field>
</Fields>
</PowerLine>
</Config>
2. 对类的结构定义
文件名称:ParaseConfig.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using System.Xml;
using System.Xml.Serialization;
//
namespace PowerCongfig
{ // 名称和对应值
public class FieldNode
{
[XmlAttribute("name")]
public string name { get; set; }
[XmlText]
public string Value{ get; set; }
} // 名称和对应值
public class FieldsNode
{
[XmlElement("Field")]
public List<FieldNode> oFieldNode { get; set; }
} //
public class PowerLine
{
[XmlElement("Version")] // 版本
public double dVersion; [XmlElement("FieldNum")] // 属性字段个数
public int CountNode { get; set; } [XmlElement("Fields")]
public FieldsNode oFieldsNode { get; set; }
} [XmlRoot("Config")]
public class TestRoot
{
[XmlElement("PowerLine")]
public PowerLine oPowerLine { get; set; }
}
}
3. 反序列化解析Xml
文件名称:
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; namespace PowerCongfig
{
class Program
{
static void Main(string[] args)
{
// BuildXMlCofig();
ParaseXMLConfig();
} // 用来生成Xml文件
private static void BuildXMlCofig()
{
TestRoot oTestRoot = new TestRoot();
oTestRoot.oPowerLine = new PowerLine();
oTestRoot.oPowerLine.dVersion = 1.01;
oTestRoot.oPowerLine.CountNode = 10; // FieldNode oFieldNode0 = new FieldNode();
oFieldNode0.name="STARTID";
oFieldNode0.Value="起始ID"; FieldNode oFieldNode1 = new FieldNode();
oFieldNode1.name="FNODE";
oFieldNode1.Value="起点";
FieldNode oFieldNode2 = new FieldNode();
oFieldNode2.name="TNODE";
oFieldNode2.Value="终点";
FieldNode oFieldNode3 = new FieldNode();
oFieldNode3.name="POWERID";
oFieldNode3.Value="线路ID";
//
oTestRoot.oPowerLine.oFieldsNode = new FieldsNode();
oTestRoot.oPowerLine.oFieldsNode.oFieldNode = new List<FieldNode>();
oTestRoot.oPowerLine.oFieldsNode.oFieldNode.Add(oFieldNode0);
oTestRoot.oPowerLine.oFieldsNode.oFieldNode.Add(oFieldNode1);
oTestRoot.oPowerLine.oFieldsNode.oFieldNode.Add(oFieldNode2);
oTestRoot.oPowerLine.oFieldsNode.oFieldNode.Add(oFieldNode3); // 序列化
// 保存文件名称
string oFileName = "C:\\my_Test.xml"; System.Xml.Serialization.XmlSerializer serializer = null;
System.IO.StreamWriter writer = null;
try
{
serializer = new System.Xml.Serialization.XmlSerializer(oTestRoot.GetType());
FileStream fs = new FileStream(oFileName, FileMode.Create);
serializer.Serialize(fs, oTestRoot);
}
catch (System.Exception ex)
{
string mes = ex.Message; }
finally
{
if (writer != null)
{
writer.Close();
}
}
} // 解析Xml到类对象中。
private static void ParaseXMLConfig()
{
TestRoot oTestRoot = new TestRoot();
oTestRoot.oPowerLine = new PowerLine();
oTestRoot.oPowerLine.oFieldsNode = new FieldsNode();
oTestRoot.oPowerLine.oFieldsNode.oFieldNode = new List<FieldNode>(); string oFileName = @"D:\zhangpengju\CodeTest\testcplus\TestConfig.xml";
System.Xml.Serialization.XmlSerializer serializer = null;
System.IO.StreamWriter writer = null;
try
{
serializer = new System.Xml.Serialization.XmlSerializer(oTestRoot.GetType());
FileStream fs = new FileStream(oFileName, FileMode.Open);
oTestRoot = (TestRoot)serializer.Deserialize(fs);
}
catch (System.Exception ex)
{
string mes = ex.Message; }
finally
{
if (writer != null)
{
writer.Close();
}
}
//
Console.WriteLine("Version is {0}",oTestRoot.oPowerLine.dVersion);
Console.ReadLine();
}
}
}
就这样。自己保存!
免分源码地址:http://download.csdn.net/detail/cartzhang/6270007
求进步!
C# XML 反序列化解析的更多相关文章
- [C# | XML] XML 反序列化解析错误:<xml xmlns=''> was not expected. 附通用XML到类解析方法
使用 XML 反化时出现错误: public static TResult GetObjectFromXml<TResult>(string xmlString) { TResult re ...
- 让Visual Studio 2013为你自动生成XML反序列化的类
Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性.如: 1. 在代码编辑界面的右侧滚动条上显示不同颜色的标签,让开发人员可以对所编辑文档的修改.查找.定位情 ...
- 自动生成XML反序列化的类
原文地址:http://www.cnblogs.com/jaxu/p/3632077.html Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性.如: ...
- 玩转iOS开发 - JSON 和 Xml 数据解析
前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...
- 分析Json/Xml的解析过程
json和xml都是用来进行数据的传输和交换的,是目前用来传输数据用的最多的两种技术,下面我们分别来认识一下它们及其解析过程 一.json 1.json简介 JSON是一种基于文本的轻量级数据交换格式 ...
- XML反序列化遇到数字型节点值为空导致反序列化异常
实体类: [XmlRoot("stream")] public class _30320DuisiFukuanQueryResponseModel : ResponseModelB ...
- 通过正则表达式实现简单xml文件解析
这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...
- JAVA 中XML的解析
XML: 可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...
- xml的解析与创建——bing到youdao导入文件的转换
首先是为了解决一个问题:如何将必应单词本中记录的单词转入到有道词典中去.实际上,必应词典可以导出xml文件,但是该文件有道词典无法解析.这里涉及到xml的解析和创建了. 代码如下: import ja ...
随机推荐
- GIS+=地理信息+容器技术(1)——容器技术概述
-------------------------------------------------------------------------------------- Blog: http ...
- 具体解释Hibernate中的事务
1.前言 上一篇博客解说了Hibernate中的一级缓存,属于Session级别的.这篇博客解说一下Hibernate中的事务机制. 有关事务的概念.请參照通俗易懂数据库中的事务. 2.怎样处理Hi ...
- BAT常问问题总结以及回答(数据库篇)
数据库 事务四大特性(ACID)原子性.一致性.隔离性.持久性 事务:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.begin transaction 原 ...
- Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- 具体解释linux文件处理的的经常使用命令
原创Blog.转载请注明出处 附上之前訪问量比較高的几篇linux博客 本人使用shell的8个小技巧 grep的九个经典使用场景 sed命令具体解释 awk命令具体解释 linux中全部的东西都是文 ...
- 自己实现android側滑菜单
当今的android应用设计中.一种主流的设计方式就是会拥有一个側滑菜单,以图为证: 实现这种側滑效果,在5.0曾经我们用的最多的就是SlidingMenu这个开源框架,而5.0之后.goog ...
- 为了世界的和平~一起上caioj~~~!
打Call~打Call~打Call~~~!!! 世界毁灭了你在哪???不要犹豫,快去caioj!!! 无比优质的oj,未来大牛的明智之选----就是caioj~~~
- Eclipse-Error:笔记-1
ylbtech-Eclipse-Error:笔记-1 1.返回顶部 1. Whitelabel Error PageThis application has no explicit mapping f ...
- sublime的常用插件
作为一个开发者你不可能没听说过SublimeText.不过你没听说过也没关系,下面让你明白. SublimeText是一款非常精巧的文本编辑器,适合编写代码.做笔记.写文章.它用户界面十分整洁,功能非 ...
- Gitlab smtp 设置
地址: https://blog.csdn.net/yongche_shi/article/details/78677163 # 腾讯云限制25发信端口,修改为465,并开启. https://doc ...