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 ...
随机推荐
- [Cypress] Wait for XHR Responses in a Cypress Test
When testing interactions that require asynchronous calls, we’ll need to wait on responses to make s ...
- 我是这样记录javascript知识的------Day31
在陆续研究了几个javascript的几个小应用后,也算对javascript有了更深一点的认识,头脑中大约都有些印象,总体上说却有些模糊,这时.我知道,是时候看看w3cshool的这部分介绍了. 没 ...
- QT4.86写中文XML
网上都语焉不详.举例XML使用的时候,全部都是英文内容,当然不会失败了.尤其我还以VS2008编译,编译器的Character Set就有三种设置,配上QTextCodec::setCodecForC ...
- linux git保存用户名密码(避免每次push输用户名密码)
Linux/Unix/Mac 系统 新建一个 ~/.netrc 文件, 将 git 服务器, 用户名以及密码记录在这个文件, 如下所示: machine your-git-server log ...
- 【BZOJ1565】【NOI2009】植物大战僵尸
好久没写博客了 题目 题目在这里 思路&做法 没什么好说的 应该很容易看出是 最大闭合子图 吧? 不过要注意一下的是,这题 可能有植物是不可能被击溃的 , 所以要先跑一遍 拓扑排序 把这些点排 ...
- Django之缓存机制
1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次 ...
- Spring《八-一》CGLIB代理和自动代理
CGLIB代理 配置文档 <bean id="logProxy" class="org.springframework.aop.framework.ProxyFac ...
- Super超级ERP系统---(4)采购管理--采购单创建
Erp系统中采购是系统必不可少的一部分,也就是ERP种的进货模块,超级ERP系统中的采购模块选选择采购供应商,然后选择进货商品的数量和采购价格,创建采购进货单 1.创建采购单 2.审核采购单 采购单创 ...
- Android学习——控件ListView的使用
一.ListView的简单用法 首先新建一个ListViewTest项目,并让Android Studio自动创建好活动.然后修改activity_main.xml中的代码,如下: <?xml ...
- jq+mui 阻止事件冒泡
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...