自己用。记录一下!

用于配置文件的解析,可以用来设置配置。不用修改程序里参数。

用微软的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 反序列化解析的更多相关文章

  1. [C# | XML] XML 反序列化解析错误:<xml xmlns=''> was not expected. 附通用XML到类解析方法

    使用 XML 反化时出现错误: public static TResult GetObjectFromXml<TResult>(string xmlString) { TResult re ...

  2. 让Visual Studio 2013为你自动生成XML反序列化的类

    Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性.如: 1. 在代码编辑界面的右侧滚动条上显示不同颜色的标签,让开发人员可以对所编辑文档的修改.查找.定位情 ...

  3. 自动生成XML反序列化的类

    原文地址:http://www.cnblogs.com/jaxu/p/3632077.html   Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性.如: ...

  4. 玩转iOS开发 - JSON 和 Xml 数据解析

    前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...

  5. 分析Json/Xml的解析过程

    json和xml都是用来进行数据的传输和交换的,是目前用来传输数据用的最多的两种技术,下面我们分别来认识一下它们及其解析过程 一.json 1.json简介 JSON是一种基于文本的轻量级数据交换格式 ...

  6. XML反序列化遇到数字型节点值为空导致反序列化异常

    实体类: [XmlRoot("stream")] public class _30320DuisiFukuanQueryResponseModel : ResponseModelB ...

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

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

  8. JAVA 中XML的解析

    XML:  可扩展标记语言(extensible Markup Language) 用于标记电子文件使其具有结构性的标记语言.XML可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定 ...

  9. xml的解析与创建——bing到youdao导入文件的转换

    首先是为了解决一个问题:如何将必应单词本中记录的单词转入到有道词典中去.实际上,必应词典可以导出xml文件,但是该文件有道词典无法解析.这里涉及到xml的解析和创建了. 代码如下: import ja ...

随机推荐

  1. configure: error: XML configuration could not be found

    运行: ./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpm 之后出现 Running FastCGI Process M ...

  2. C#替换字符串起始/结尾指定的字符串

    #region 替换字符串起始位置(开头)中指定的字符串 /// <summary> /// 替换字符串起始位置(开头)中指定的字符串 /// </summary> /// & ...

  3. 0x57 倍增优化DP

    真的是下定了巨大的决心来搞这一讲,果不其然耗了一晚上 开车旅行(真的是NOIP的题吗怎么这么恐怖) 首先,先用set把小A和小B从城市i出发,到达的下一个城市预处理出来. f[i][j][k]表示走了 ...

  4. hdoj---Rescue

    Rescue Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  5. 院校-美国:麻省理工学院(MIT)

    ylbtech-院校-美国:麻省理工学院(MIT) 麻省理工学院(Massachusetts Institute of Technology),简称麻省理工(MIT),坐落于美国马萨诸塞州波士顿都市区 ...

  6. x64汇编第三讲,64位调用约定与函数传参.

    目录 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 二丶x64汇编 2.1汇编详解 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 在x86下我们汇编的传参如下: ...

  7. mvc 伪静态任意扩展名的实现方法

    比如:要实现 http://localhost:60291/home/geta/1212.html 或者 .abc 任意扩展名 完成两步即可. 第一步修改路由: public static void ...

  8. SSRS 报表 如何加参数

    SSRS 报表 如何加参数 连接上以后出现一个问题 就是给报表加上参数以后报表不断刷新,跟上次那个报表刷新是同样的问题.那么下面我们来解决一下. 1. 这是给报表添加默认参数进入页面后就不断的刷新刷新 ...

  9. Entity Framework 的懒加载、预先加载、显示加载

    1.新建两个实体,一个班级有多个学生 public class Student { public int StudentId { get; set; } public string StudentNa ...

  10. Super超级ERP系统---(4)采购管理--采购单创建

    Erp系统中采购是系统必不可少的一部分,也就是ERP种的进货模块,超级ERP系统中的采购模块选选择采购供应商,然后选择进货商品的数量和采购价格,创建采购进货单 1.创建采购单 2.审核采购单 采购单创 ...