NET(C#):XmlArrayItem特性和XmlElement特性在序列化数组的差别

https://www.mgenware.com/blog/?p=142

比如这样一个类,我们用XmlArrayItem特性标明数组内出现的元素类型:

public class a{    [XmlArrayItem(Type = typeof(int)), XmlArrayItem(Type = typeof(Guid)), XmlArrayItem(Type = typeof(string))]    public object[] arr = new object[] { 12, "hehe", Guid.NewGuid() };}

序列化的XML是:

<a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:xsd="http://www.w3.org/2001/XMLSchema">    <arr>        <int>12</int>        <string>hehe</string>        <guid>291b7cba-fc32-4019-bb22-d5d61643b6a7</guid>    </arr></a>

字段arr的名称是以XML元素写入的。

但如果把XmlArrayItem都改成XmlElement特性:

public class a{    [XmlElement(Type = typeof(int)), XmlElement(Type = typeof(Guid)), XmlElement(Type = typeof(string))]    public object[] arr = new object[] { 12, "hehe", Guid.NewGuid() };}

序列化的XML是这样:

<a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:xsd="http://www.w3.org/2001/XMLSchema">    <int>12</int>    <string>hehe</string>    <guid>5e7da5a0-d513-47b7-ae8f-80b404a9b0d4</guid></a>

并没有arr字段的名称!

注意你可以用XmlArrayItem或者XmlElement特性的ElementName来控制对应类型的XML元素名称。

其他关于XML序列化的文章,可以参考:
.NET(C#):在数组成员上加入XmlElement特性
.NET(C#):XML序列化时派生类的处理



有任何疑问,可以到Coldfunction来提问.

Related Posts:

    1. .NET(C#):在数组成员上加入XmlElement特性
    2. .NET(C#):XML序列化时派生类的处理
    3. .NET(C#):觉察XML反序列化中的未知节点
    4. .NET(C#): 格式化输出IDictionary<string, object>字典对象
时间: 2025-01-24 08:10:00

NET(C#):XmlArrayItem特性和XmlElement特性在序列化数组的差别的相关文章

【转】CSS深入理解流体特性和BFC特性下多栏自适应布局

这篇文章发布于 2015年02月12日,星期四,23:36,归类于 css相关. 阅读 30873 次, 今日 63 次 by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=4588 一.开篇之言 要说web上实现两栏自适应布局的方法,一双手都数不过来.不知大家有没有细想过,为什么这些方法可以实现自适应布局呢? 本文就将深入探讨下流体特性和BFC特性下的两栏自适应布局,还是

改变TLabel字型和颜色(Styled特性高于自身特性,李维的博客)

最近收到几位使用者的来信都是和如何改变FireMonkey TLabel组件的字型和颜色, 这几位使用者都是直接改变TextSettings特性中的Font子特性但却无法改变字型和颜色, 因此来信询问. FireMonkey的TLabel组件控制组件的字型和颜色其实有2个特性, 分别是StyledSettings和TextSettings, 而且StyledSettings特性优先于TextSettings特性,在内定上StyledSettings特性会设定它的Size和FontColor子特性

接口和抽象类的对比,面向对象的三大特性和四大特性

Day09_SHJavaTraing_4-14-2017 一.接口和抽象类的对比1.相同点    ①都位于继承的顶端,用于被其他类实现或继承    ②都不能直接实例化对象    ③都包含抽象方法,其子类都必须覆写这些抽象方法2.区别 2.1从声明上: ①抽象类是一个类,需要使用关键字class声明        ②接口不是一个类,使用关键字interface声明 2.2从能够书写的成员上看: ①抽象类可以书写类中的所有成员 ②接口中只能书写成员变量和抽象函数(从JDK8开始,接口中可以有实现的函

关于Oracle 11gR2中的Database Smart Flash Cache特性以及该特性所适用的操作系统

参考自: How To Size the Database Smart Flash Cache (文档 ID 1317950.1) 首先是对Database Smart Flash Cache的介绍: The Database Smart Flash Cache is a new feature in Oracle Database 11g Release 2 (11.2). The Database Smart Flash Cache is a transparent extension of

数据注解特性之ConcurrencyCheck特性【Code-First系列】

ConcurrencyCheck特性可以应用到领域类的属性中.当EF执行更新操作的时候,Code-First将列的值放在where条件语句中,你可以使用这个CurrencyCheck特性,使用已经存在的列做并发检查,而不是使用单独的TimeStamp列来做并发检查. 看下面的代码: using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Co

TypeScript01 编译环境的搭建、字符串特性、类型特性

知识准备:JavaScript满足ES5前端规范.TypeScript满足ES6前端规范 1 TypeScript开发环境 TypeScript代码不能直接被浏览器识别,必须先转换成JS代码:通常是利用编译器来讲TS代码转换成JS代码 1.1 使用在线的编辑器 1.1.1 利用TypeScript官网提供的编译器 TypeScript官网地址:点击前往 TypeScript官网提供的在线编译器:点击前往 1.1.2 利用Babel官网提供的编译器 Babel官网地址:点击前往 Babel官网提供

高级静态路由的浮动特性和永久特性(二)

1.说明 浮动静态路由是一种特殊的静态路由,通过配置一个比主路由的管理距离更大的静态路由,保证网络中主路由失效的情况下,提供备份路由.但在主路由存在的情况下它不出现在路由表中.主要用于ISP线路的备份.永久特性就是静态路由永久存在于路由表中,即使接口关闭. 2.模拟实验 a.实验拓扑 b.说明 从192.168.1.0/24去往2.2.2.0/24有两条线路,默认走电信线路,当电信线路故障时,自动切换到铁通线路.实现ISP的冗余. c.配置静态路由 R1(config)#ip route 2.2

js私有特性,公有特性和特权特性

js中创建对象一般有两种常用方式.一,对象字面量.二,构造函数法 . 其中对象字面量方法很简单,在此不必赘述. 对于一个对象来说,有属性(attribution)和方法(method),把对象的属性和方法统称起来不妨称为对象的特性(property). 对于对象字面量创建的对象,只有公有特性.对象的属性和方法只要通过点操作符就可以随意访问和修改,对象很容易被破坏,对象的封装性很差. 而构造函数法创建的对象就能提供一定的封装性.实现类似于C++,java的私有方法,常量,静态类等特性. 下面看一个

JDK5的新特性之增强for循环遍历数组或集合

[格式] 1 for(元素的类型 变量名 : 数组或Collection集合名){ 2 //此处使用变量名即可,该变量就是普通for里的i. 3 } 原文地址:https://www.cnblogs.com/schiller-hu/p/8451854.html