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. BZOJ 3270 博物馆 ——概率DP 高斯消元

    用$F(i,j)$表示A在i,B在j的概率. 然后很容易列出转移方程. 然后可以高斯消元了! 被一个问题困扰了很久,为什么起始点的概率要加上1. (因为其他博客上都是直接写成-1,雾) 考虑初始状态是 ...

  2. BZOJ 4161 Shlw loves matrixI ——特征多项式

    矩阵乘法递推的新姿势. 叉姐论文里有讲到 利用特征多项式进行递推,然后可以做到k^2logn #include <cstdio> #include <cstring> #inc ...

  3. 常州模拟赛d6t3 噪音

    FJ有M个牛棚,编号1至M,刚开始所有牛棚都是空的.FJ有N头牛,编号1至N,这N头牛按照编号从小到大依次排队走进牛棚,每一天只有一头奶牛走进牛棚.第i头奶牛选择走进第p[i]个牛棚.由于奶牛是群体动 ...

  4. Python脚本实现单据体首行过滤

    编写的Python脚本 可以看到,实际代码只有3句,即实现单据体首行过滤代码(其实最最主要的是无需写组件动态即时注册),并有注册到[采购订单]"表单构建插件"上.界面运行时,实际效 ...

  5. GDOI2018 新的征程

    看标题您一定以为考得很好.. Bad ending.想看美好结局的出门右转其他大佬博客. Day0 早上去车站的时候心情挺好.倒不是因为自己做足了准备,也不是因为预感到有好事发生,而是心情不好也没有用 ...

  6. Laravel 之Cache缓存

    写入缓存 Cache::put('key','value',10);//设置10分钟 获取缓存 Cache::get('key'); 增加缓存 Cache::add('key','value',10) ...

  7. 洛谷——P2819 图的m着色问题

    P2819 图的m着色问题 题目背景 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色.如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的.图的 ...

  8. CODEVS_1074 食物链

    #include<iostream> #include<algorithm> #include<cstring> #include<string> #d ...

  9. Linux下的搜索命令grep(转)

    一.简介 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具, ...

  10. Spring拦截器从Request中获取Json格式的数据

    7 package com.newpp.core.interceptor; 8 9 import java.io.BufferedReader; 10 import java.io.ByteArray ...