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. 数据结构1 「在线段树中查询一个区间的复杂度为 $O(\log N)$」的证明

    线段树属于二叉树, 其核心特征就是支持区间加法,这样就可以把任意待查询的区间$[L, R]$分解到线段树的节点上去,再把这些节点的信息合并起来从而得到区间$[L,R]$的信息. 下面证明在线段树上查询 ...

  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. scrapy框架之comand line tool

    一 Global Command 1 startproject https://docs.scrapy.org/en/latest/topics/commands.html#startproject ...

  4. android studio AndroidManifest

    一.目录结构 1. AndroidManifest.xml 它是一个清单文件,提供应用的基本信息 <?xml version="1.0" encoding="utf ...

  5. 读取编码器信息Python2.7和Python3.3版本差异及解决,一次订阅多次调用callback的解决

    1. Python3.3以字节类型返回编码器信息,b'...',BUF: b'\xc3KOO\x00OO\x00OO\x00OO\x00OO\x00\x03\x00\x00\x00\x00\x99R\ ...

  6. Codeforces Gym 100418K Cards 组合数学

    CardsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action? ...

  7. 纯Java实现定时任务(转)

    第一种: import java.util.Timer; import java.util.TimerTask; /** * * 于第一种方式相比,优势 1>当启动和去取消任务时可以控制 2&g ...

  8. 使用ftrace学习linux内核函数调用

    http://www.cnblogs.com/pengdonglin137/articles/4752082.html 转载: http://blog.csdn.net/ronliu/article/ ...

  9. java消息队列怎么用

    消息队列的使用场景是怎样的? 经常听到诸如rebbitmq,activemq,请教一下各位前辈消息队列的使用场景是怎样的,什么时候会用到它   校验用户名等信息,如果没问题会在数据库中添加一个用户记录 ...

  10. [转] windows下Svn服务器之必须提交修改注释篇

    1. 强制添加注释信息 找到Respositories目录下对应项目里的hooks目录下建立pre-commit.bat文件,复制如下内容: @echo off set SVNLOOK="C ...