C# xml可序列化多值枚举脚本
代码:
using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization; namespace Hont
{
[XmlRoot("SerizlizableMultipleValueEnum"), Serializable]
public class SerizlizableMultipleValueEnum<TEnum> : IXmlSerializable
where TEnum : IConvertible
{
TEnum mEnumValue; public TEnum EnumValue { get { return mEnumValue; } } public SerizlizableMultipleValueEnum()
{
} public SerizlizableMultipleValueEnum(TEnum enumValue)
{
this.mEnumValue = enumValue;
} #region IXmlSerializable Members public XmlSchema GetSchema()
{
return null;
} public void ReadXml(XmlReader reader)
{
var typeSer = new XmlSerializer(typeof(int)); bool wasEmpty = reader.IsEmptyElement;
reader.Read(); if (wasEmpty)
return;
while (reader.NodeType != XmlNodeType.EndElement)
{
reader.ReadStartElement("EnumValue");
mEnumValue = (TEnum)typeSer.Deserialize(reader);
reader.ReadEndElement(); reader.MoveToContent();
}
reader.ReadEndElement();
} public void WriteXml(XmlWriter writer)
{
var typeSer = new XmlSerializer(typeof(int)); writer.WriteStartElement("EnumValue");
typeSer.Serialize(writer, Convert.ToInt32(mEnumValue));
writer.WriteEndElement();
} #endregion
}
}
使用:
mTestValue = new SerizlizableMultipleValueEnum<MyEnum>(MyEnum.Value1 | MyEnum.Value2);
var str = XmlSerializationHelper.SerializationToString(mTestValue); Console.WriteLine(str); mTestValue = XmlSerializationHelper.DeSerializationFromString<SerizlizableMultipleValueEnum<MyEnum>>(str);
Console.WriteLine(mTestValue.EnumValue);
//print 6.(value1 is 2, value2 is 4)
其他扩展:
可序列化接口:http://www.cnblogs.com/hont/p/4162448.html
序列化助手类:http://www.cnblogs.com/hont/p/3959854.html
C# xml可序列化多值枚举脚本的更多相关文章
- windows phone8.1:Xml,Json序列化和反序列化
原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...
- (转)C# Xml进行序列化与反序列化
---------------------------------------------------------------文章1---------------------------------- ...
- 生成xml文件的步骤 -- XML的序列化器
1. 初始化一个xml的序列化器 XmlSerializer serializer = Xml.newSerializer(); 2. 设置序列化器的参数 serializer.setOutput(o ...
- xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................
xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西.xml里面的结构和数据库不一致..................
- VB 老旧版本维护系列---读取xml某个节点的值
读取xml某个节点的值 '定义xml字符串内容地址 Dim xmlFileStr As String = "" '定义所需读取节点的名称 Dim readNodeName As S ...
- Sqlserver更新数据表xml类型字段内容某个节点值的脚本
GO USE [JC2010_MAIN_DB] 1.新建备份表JobObjectVersion_JCSchemVersion_BCK) GO IF EXISTS (SELECT * FROM sys. ...
- C#里XML(JSON)序列化时,自动隐藏值为Null的成员的输出
从StackOverflow里找到的答案.发现对最新的Newtownsoft的JSON序列化也同样适用. https://stackoverflow.com/questions/5818513/xml ...
- 【私人定制jackson】定制jackson的自定义序列化(null值的处理)
最近用springMVC做服务端的http+json的接口,出现一个不是特别容易解决的问题: 在对List类型的值进行处理时,有一部分服务是有做一些逻辑判断的,在逻辑判断不通过的时候会返回一个null ...
- WebServices中Xml的序列化
一.定义序列化实体类 [System.Xml.Serialization.XmlRoot("Custome_Xml_Root_Name")] //自定义生成的Xml根目录名称 pu ...
随机推荐
- BZOJ 1264 AHOI2006 基因匹配Match 动态规划+树状数组
题目大意:给定n个数和两个长度为n*5的序列,每一个数恰好出现5次,求两个序列的LCS n<=20000.序列长度就是10W.朴素的O(n^2)一定会超时 所以我们考虑LCS的一些性质 LCS的 ...
- C#.NET常见问题(FAQ)-如何捕捉窗体关闭的事件,弹窗确认是否退出
首先定位到窗体的FormClosing事件中,写关闭之前要执行的方法名称 一般只需要添加下面的代码即可实现窗体关闭的时候提示是否确认退出 //捕捉窗体Close事件,关闭窗口时提示 if (Mes ...
- wine的使用
ubuntu-ubuntu10.04使用wine安装SourceInsight http://www.cnblogs.com/eddy-he/archive/2012/03/08/ubuntu_win ...
- PHP高级教程-文件上传
PHP 文件上传 通过 PHP,可以把文件上传到服务器. 本章节实例在 test 项目下完成,目录结构为: test |-----upload # 文件上传的目录 |-----form.html # ...
- storm0.9.0.1升级安装
来自:http://blog.csdn.net/liuzhoulong/article/details/21112101 1,下载0.9.0.1 http://storm.incubator.apac ...
- plsql 表数据中文显示乱码(配置环境变量)
plsql 表数据中文显示乱码(配置环境变量) CreateTime--2018年4月23日19:32:37 Author:Marydon 1.情景再现 2.解决方案 配置环境变量 变量名:NLS ...
- Android网络开发之WebKet引擎基础
Android浏览器的内核是Webkit引擎,WebKit的前身是KDE小组的KHTML. Apple公司推出的Safari浏览器,使用的内核是装备了KHTML的WebKit引擎. WebKit内核在 ...
- Emacs 文件中的查找操作
1,在本文件中查找 list-matching-lines 命令会列出本文件中所有出现text的地方.下面是它的一个输出示例: 7 matches for "ngx_http_wait_re ...
- swift上传图片
import UIKit import AFNetworking class YJRequest: NSObject { //#pragma mark - 上传图片 func uploadImageW ...
- HDUOJ----(1175)连连看
连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...