1、https://www.cnblogs.com/sandyliu1999/p/4844664.html

  XML是有层次结构的,序列化实际就是内存化,用连续的结构化的内存来存储表示一个对象,那么这两者之间就有区别了,查看下面的对应规则。

  看上面链接里给出的例子应该就差不多可以看明白了。

  下面看下XML格式的详解。

  

2、http://www.cnblogs.com/chenjiacheng/p/6522563.html  --xml格式详解。

  

  

3、http://blog.csdn.net/com_ma/article/details/73277535

  另一篇xml格式文档详解,摘取一点有用信息,开始标签和结束标签中间的是内容,一个元素可以有多个属性,格式如下:<元素名  属性名=“属性值” 属性名=“属性值”>

            

  4、增加一个自己应用的实例

首先是xml文档,文档结构表明了需求数据结构。

<?xml version="1.0" encoding="utf-8"?>

<root>

  <ROOTITEMS>

    <RootItem>
<NAME>system</NAME>
<Items>
<Item Value="sysDescr" OID="1.3.6.1.2.1.1.1.0" ></Item>
<Item Value="sysUpTime" OID="1.3.6.1.2.1.1.3.0" ></Item>
<Item Value="sysContact" OID="1.3.6.1.2.1.1.4.0" ></Item>
<Item Value="sysName" OID="1.3.6.1.2.1.1.5.0" ></Item>
<Item Value="sysLocation" OID="1.3.6.1.2.1.1.6.0" ></Item>
<Item Value="sysServices" OID="1.3.6.1.2.1.1.7.0" ></Item>
<Item Value="sysORLastChange" OID="1.3.6.1.2.1.1.8.0" ></Item>
<Item Value="sysORTable" OID="1.3.6.1.2.1.1.9.0"></Item>
</Items>
</RootItem> </ROOTITEMS> </root>

  然后是数据结构类,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization; namespace WindowsFormsApplication1
{
[XmlRoot("root")]
public class SnmpMIB
{
[XmlArray("ROOTITEMS"),XmlArrayItem("RootItem")]
public RootItem[] oidItems
{
get;
set;
}
} public class RootItem
{
[XmlElement("NAME")]
public string rootName
{
set;
get;
} [XmlArray("Items"), XmlArrayItem("Item")]
public Item[] items
{
set;
get;
}
} public class Item
{
[XmlAttribute("Value")]
public string name
{
set;
get;
} [XmlAttribute( "OID")]
public string oid
{
set;
get;
}
}
}

  序列化与反序列化类,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Serialization; namespace WindowsFormsApplication1
{
class ConfigManager
{
private static SnmpMIB _snmpOids = null;
public ConfigManager() { } public SnmpMIB Get(string path)
{
if (_snmpOids == null)
{
FileStream fs = null;
try
{
XmlSerializer xs = new XmlSerializer(typeof(SnmpMIB));
fs = new FileStream(path, FileMode.Open, FileAccess.Read);
_snmpOids = (SnmpMIB)xs.Deserialize(fs);
fs.Close(); return _snmpOids;
}
catch
{
if (fs != null)
fs.Close(); throw new Exception("Xml deserialization failed!");
}
}
else
{
return _snmpOids;
}
} public void Set(string path, SnmpMIB snmpOids)
{
if (snmpOids == null)
throw new Exception("Parameter humanResource is null!"); FileStream fs = null;
try
{
XmlSerializer xs = new XmlSerializer(typeof(SnmpMIB));
fs = new FileStream(path, FileMode.Create, FileAccess.Write);
xs.Serialize(fs, snmpOids);
_snmpOids = null;
fs.Close();
}
catch
{
if (fs != null)
fs.Close();
throw new Exception("Xml serialization failed!");
}
}
}
}

  最后就是应用类了。

ConfigManager config = new ConfigManager();
SnmpMIB snmpMib = null;
try
{
snmpMib = config.Get("XMLFile1.xml");
}
catch (Exception ex)
{
Console.WriteLine("Here is Error!");
} if (snmpMib != null)
{
RootItem[] items = snmpMib.oidItems;
foreach(RootItem item in items)
{
Console.WriteLine(item.rootName);
foreach (Item it in item.items)
{
Console.WriteLine(it.name + " " + it.oid);
}
}
}

  数据结构的定义是为了简化SNMP的MIB内容,所以需要自定义这样一个数据结构。关于SNMP协议,可以参见前一篇文档。

C# XML序列化与反序列化与XML格式详解的更多相关文章

  1. C#序列化与反序列化(Serialize,Deserialize)实例详解

    这篇文章主要介绍了C#序列化与反序列化(Serialize,Deserialize)的方法,实例分析了C#序列化与反序列化的常见技巧,需要的朋友可以参考下 本文实例讲述了C#序列化与反序列化(Seri ...

  2. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  3. C#的XML序列化及反序列化

    webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...

  4. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  5. c# XML序列化与反序列化

    c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...

  6. Windows phone 之XML序列化与反序列化

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  7. C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...

  8. Json/XML序列化和反序列化

    1.json序列化和反序列化 序列化是将对象状态转换为可保持或传输的格式的过程; 反序列化,它将流转换为对象; 1)Json.Net 推荐使用Json.Net类库,需要引入的命名空间; 序列化:Jso ...

  9. 基于.net core封装的xml序列化,反序列化操作

    需求: 由于在.net core中去除了Xml序列化XmlSerializer操作类.因此,在于一此数据传输当中出,需要用到对xml格式字符串的处理问题.因此封装了一个xml序列化与反序列化操作的类库 ...

随机推荐

  1. 【2018.11.23】2018WCTest(7)

    向已退役学长致敬! 题目&他的题解 T1 一道睿智题目,正常思路就是时空复杂度均为 $O(n\times 32768)$ 的背包.这个做法不被卡时间却被卡空间,其实就是想让你离线处理询问,然后 ...

  2. cf682E Alyona and Triangles

    You are given n points with integer coordinates on the plane. Points are given in a way such that th ...

  3. N皇后-位运算优化

    N皇后问题 时间限制: 5 Sec  内存限制: 128 MB 题目描述 魔法世界历史上曾经出现过一个伟大的罗马共和时期,出于权力平衡的目的,当时的政治理论家波利比奥斯指出:“事涉每个人的权利,绝不应 ...

  4. STL中heap用法

    #include<cstdio> #include<iostream> #include<algorithm> using namespace std; ]={,, ...

  5. 自己写了一个超级简便且傻瓜式的且功能强大的CSV组件(并且代码优雅,绝对没有一行多余的代码)

    github地址: https://github.com/yangfeixxx/chipsCSV.git 解决的问题:解决了传统的CSV工具类对于实体类无法自动化封装为带表头的CSV文件的痛点,在读取 ...

  6. AtCoder Regular Contest 074F - Lotus Leaves

    $n \leq 300,m \leq 300$,$n*m$的格子里有起点有终点有空地有障碍,人会从起点选一个同行或同列空地跳过去,然后一直这样跳到终点.求至少删掉多少格子使得人跳不到终点. 首先S和T ...

  7. Java 并发编程中的 CyclicBarrier 用于一组线程互相等待

    Java 5 引入的 Concurrent 并发库软件包中的 CyclicBarrier 是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point) ...

  8. 小程序-列表块/类式ul-li格式(1)

    摘要 目前列表能布局出来,但是目前我个人还没解决的问题是:如果每个列表块都有详情页怎么解决呢? 1:我的效果图 2.正常的每个都能点击的html 注:上面的代码确实能够实现我的每个[menu2_vie ...

  9. Codeforces 837 E Vasya's Function

    Discription Vasya is studying number theory. He has denoted a function f(a, b) such that: f(a, 0) =  ...

  10. VS调试时不加载符号

    加载符号,能够让调试时进入系统的dll中,甚至能达到汇编语言的深度,让你调试时能够逐行进行.但是加载符号的话,会使得每次调试,增加进入到首个断点的时间. 而且有时候也非必要加载符号,它的取消可以使用下 ...