XmlElement可以避免由XmlSerializer多余生成的代码
public class Program
{
static void Main(string[] args)
{
var alarm = new Alarm()
{
Code = "1588-OPER-2",
Grade = "",
Source = "55A3E6C7E2A0560A956D3933F42E5AA2",
Time = DateTime.Now,
Text = "Operationnal state is offline."
}; var alarm1 = new Alarm()
{
Code = "1588-OPER-2",
Grade = "",
Source = "55A3E6C7E2A0560A956D3933F42E5AA2",
Time = DateTime.Now,
Text = "Operationnal state is offline."
}; var alarms = new AlarmSet("wxboss.srm.alarm", new List<Alarm> { alarm, alarm1 }); var alarmFile = new AlarmCatalog();
alarmFile.Alarms = new List<AlarmSet> { alarms }; Generate(alarmFile); } public static void Generate(AlarmCatalog file)
{
string path = "C:\\test.xml"; Stream stream = new FileStream(path, FileMode.Create); var serializer = new XmlSerializer(typeof(AlarmCatalog));
serializer.Serialize(stream, file); stream.Close();
} [XmlRoot("dc")]
public class AlarmCatalog
{
[XmlElement("mo")]
public List<AlarmSet> Alarms { get; set; }
} public class AlarmSet
{
#region Initialization
public AlarmSet()
{ } public AlarmSet(string domain)
{
this.Domain = domain;
} public AlarmSet(string domain, List<Alarm> items)
{
this.Domain = domain;
this.Items = items;
}
#endregion [XmlAttribute("dn")]
public string Domain { get; set; } [XmlElement("alarm")]
public List<Alarm> Items { get; set; }
} public class Alarm
{
public Alarm() { } public Alarm(string text)
{
this.Text = text;
} [XmlAttribute("source")]
public string Source { get; set; } [XmlAttribute("grade")]
public string Grade { get; set; } [XmlAttribute("code")]
public string Code { get; set; } [XmlIgnore]
public DateTime Time { get; set; } [XmlAttribute("time")]
public string TimeString
{
get { return this.Time.ToString("yyyy-MM-dd HH:mm:ss"); }
set { this.Time = DateTime.Parse(value); }
} [XmlText]
public string Text { get; set; }
}
}
<?xml version="1.0"?><dc xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <mo dn="wxboss.srm.alarm">
<alarm time="2013-09-04 11:33:01" code="1588-OPER-2" grade="1" source="55A3E6C7E2A0560A956D3933F42E5AA2">Operationnal state is offline.</alarm>
<alarm time="2013-09-04 11:33:01" code="1588-OPER-2" grade="2" source="55A3E6C7E2A0560A956D3933F42E5AA2">Operationnal state is offline.</alarm>
</mo> </dc>
XmlElement可以避免由XmlSerializer多余生成的代码的更多相关文章
- axis2生成客户端代码
通过aix2生成客户端代码需要准备相应的包,然后执行命令,步骤如下: 一.所需包准备 下载axis2-1.6.2-bin.zip,解压从lib包中取出 jaxrpc.jar wsdl4j-1.6.2. ...
- MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码
前言 经过前面EF的<第一篇>与<第二篇>,我们的数据层功能已经较为完善了,但有不少代码相似度较高,比如负责实体映射的 EntityConfiguration,负责仓储操作的I ...
- [Dynamic Language] 用Sphinx自动生成python代码注释文档
用Sphinx自动生成python代码注释文档 pip install -U sphinx 安装好了之后,对Python代码的文档,一般使用sphinx-apidoc来自动生成:查看帮助mac-abe ...
- Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询
Visual Studio Entity Framework (EF) 生成SQL 代码 性能查询 SQL 中,有SQL Server Profiler可以用来查询性能以及查看外部调用的SQL ...
- 用soapUI生成客户端代码
一.用soapUI生成客户端代码 方法一: 1.第一步,打开soapUI,菜单栏里的tools,选择apache CXF,如图, 2.第二步,WSDL:写上你连接服务端的地址,OutputDirect ...
- 使用greenDAO生成DAO代码
研究greenDAO有几天了,刚开始看别人的博客基本都把我带到了沟里,讲gradle把简单的问题搞得非常复杂,而且都是抄来抄去,看来看去也就那么几篇,实在看不下去了,只得硬着头皮自己琢磨,好在终于把这 ...
- python 自动生成C++代码 (代码生成器)
python 代码自动生成的方法 (代码生成器) 遇到的问题 工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错:而借用pyth ...
- 技巧分享——如何去除多余的CSS代码?
有时候,当你的CSS代码过多的时候,而且已经明确知道有部分CSS代码是多余的: 这时候,有什么较快的办法可以去除多余的CSS呢?? 下面分享一个实用技巧: 1.使用谷歌浏览器:Chrome .下载 2 ...
- myBatis自动生成相关代码文件配置(Maven)
pom.xml文件添加配置 <build> <finalName>generator</finalName> <plugins> <!-- mav ...
随机推荐
- Tech Stuff - Mobile Browser ID (User-Agent) Strings
Tech Stuff - Mobile Browser ID (User-Agent) Strings The non-mobile stuff is here (hint: you get jerk ...
- 算术编码Arithmetic Coding-高质量代码实现详解
关于算术编码的具体讲解我不多细说,本文按照下述三个部分构成. 两个例子分别说明怎么用算数编码进行编码以及解码(来源:ARITHMETIC CODING FOR DATA COIUPRESSION): ...
- poj 1724(有限制的最短路)
题目链接:http://poj.org/problem?id=1724 思路: 有限制的最短路,或者说是二维状态吧,在求最短路的时候记录一下花费即可.一开始用SPFA写的,900MS险过啊,然后改成D ...
- Java集合框架(二)
Set Set:无序,不可以重复元素. |--------HashSet:数据结构是哈希表. 线程是非同步的.保证元素唯一性的原理是:判断元素的hashCode值是否相同,如果相同,还会继续判断元素的 ...
- lintcode:Pow(x, n)
Pow(x, n) Implement pow(x, n). 解题 直接顺序求解,时间复杂度O(N) public class Solution { /** * @param x the base n ...
- android-exploitme(八):内存保护
如果一个手机被锁屏了,但是有个app还在后台运行,这个时候你想知道些app的信息,需要分析他的内存状态. 1. 首先运行模拟器,打开emm,使得模拟器返回锁屏状态 2. 打开ddms,下载内存文件
- JVM加载class文件的原理
当Java编译器编译好.class文件之后,我们需要使用JVM来运行这个class文件.那么最开始的工作就是要把字节码从磁盘输入到内存中,这个过程我们叫做[加载 ].加载完成之后,我们就可以进行一系列 ...
- Linux系统添加硬盘设备(磁盘分区-格式化-挂载-使用)
当全新安装了一块新的硬盘设备后,为了更充分.更安全的利用硬盘空间首先要进行磁盘的分区, 然后格式化,最后挂载使用. 实例:对新添加的硬盘设备进行分区.格式化并挂载到/newFS目录. 第一步:在vmw ...
- C# 值类型和引用类型的区别
C# 值类型和引用类型的区别 1. 值类型的数据存储在内存的栈中:引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址. 2. 值类型存取速度快,引用类型存取速度慢. 3. 值类型表示实 ...
- jsp导出excel
很多时候,我们都知道在java项目里面采用poi来导出excel很方便,但是如果你的项目采用的是jsp你可以用更简单的方法来导出.首先你要在顶部引入:<jsp:directive.page im ...