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. 【Luogu】P2679子串(DP)

    题目链接 GuessYCB的题解讲的很棒.就这样. 因为这题我不会,而题解又讲的太全太详细太好了. #include<cstdio> #include<cctype> #inc ...

  2. 【Luogu】P1330封锁阳光大学(bfs染色)

    题目链接 这题恶心死我了. bfs染色,统计每个联通块两色的个数,ans加它们的最小值. #include<cstdio> #include<cctype> #include& ...

  3. 【Luogu】P1352没有上司的舞会(树形DP)

    题目链接 设f[i][0]表示第i个人不去舞会时子树的最大欢乐度,f[i][1]表示第i个人去舞会时子树的最大欢乐度. 则有状态转移方程:f[i][0]+=∑max(f[to][0],f[to][1] ...

  4. [BZOJ1592] [Usaco2008 Feb]Making the Grade 路面修整(DP)

    传送门 有个结论,每一个位置修改高度后的数,一定是原来在这个数列中出现过的数 因为最终结果要么不递增要么不递减, 不递增的话, 如果x1 >= x2那么不用动,如果x1 < x2,把x1变 ...

  5. 刷题总结——分糖果(bzoj2330)

    题目: Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖 ...

  6. charts jupyter notebook 画简单的柱状图

    数据库是mongdb 数据是58同城上发的转手记录 一 为了保证数据安全,对需要进行处理的数据进行拷贝. > db.createCollection('test') { } > show ...

  7. Ubuntu Jdk卸载 Oracle Jdk安装

    完全卸载 移除所有 Java相关包 (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ): apt-get update apt-cache search java ...

  8. linux的sar命令未找到

    linux的sar命令未找到 一般的命令可以直接使用yum安装,但是sar和mpstat命令这两个命令都是在sysstat包里, 网上的解决方法:rpm -ivh gd-2.0.32-23.2.i58 ...

  9. SQL行转列 (及EAV模型获取数据)

    参考文章: http://www.williamsang.com/archives/1508.html 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当作列. ...

  10. 迈出从3K到1W的重要一步——掌握设计模式

    IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝:而自己加班加点搞到天亮还做不完. 为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置:而自 ...