自己用。记录一下!

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

用微软的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. 《随笔》pyqt 获取 TreeWidget 选中项的内容

    感谢朋友支持本博客,欢迎共同探讨交流.因为能力和时间有限,错误之处在所难免.欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  2. 问题3-Error occurred during initialization of VM Could not reserve enough space for object heap

    初步断定是内存方面的问题 于是决定修改配置文件 D:\study\eclipse\eclipse\eclipse.ini -startupplugins/org.eclipse.equinox.lau ...

  3. POJ 2553 The Bottom of a Graph(强连通分量)

    POJ 2553 The Bottom of a Graph 题目链接 题意:给定一个有向图,求出度为0的强连通分量 思路:缩点搞就可以 代码: #include <cstdio> #in ...

  4. 日积(Running)月累(ZSSURE):Task之Cancel、OpenAccess之Delete及fo-dicom之DeepCopy、

    题记: 最近看了一篇关于架构方面的良心长文你的架构是怎样一步步腐化的?,文中字字句句道出了诸多从业者.初创企业,以及BAT都会遇到的问题,细细品读后认为工作生活中的诸多情况皆如此,都会有一个体量由小到 ...

  5. graphviz.js划线操作

    digraph A{ graph[color=red bgcolor="cadetblue" label="海阔天空",fontname="FangS ...

  6. 在android中读写文件

    在android中读写文件 android中只有一个盘,正斜杠/代表根目录. 我们常见的SDK的位置为:/mnt/sdcard 两种最常见的数据存储方式: 一.内存 二.本地 1.手机内部存储 2.外 ...

  7. package-org.springframework.ui-interface:Model.class

    ylbtech-package-org.springframework.ui-interface:Model.class 1.返回顶部 1. /* * Copyright 2002-2012 the ...

  8. 08.HttpUrlconnection方式调用

    package com.rl.client; import java.io.BufferedInputStream; import java.io.BufferedReader; import jav ...

  9. jquery的this和$(this)

    1.JQuery this和$(this)的区别 相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的  $()  这 ...

  10. kubernetes系列

    目录: 介绍的全部可以在github上找到,链接  haoprogrammer kubernetes学习:(一).kubeadm搭建kubernetes(v1.13.1)单节点集群 kubernete ...