1
但是,当我将对象序列化"/>

关于c#:XML序列化布尔值为0和1

关于c#:XML序列化布尔值为0和1

XML Serialize boolean as 0 and 1

XML模式第2部分规定,定义为布尔值的数据类型的实例可以具有以下合法文字{true,false,1,0}。
例如,以下XML在反序列化时,将布尔属性" Emulate"设置为true

1
2
3
<root>
    1</emulate>
</root>

但是,当我将对象序列化回XML时,得到的是true而不是数值。 我的问题是,有没有一种方法可以控制XML中的布尔表示形式?


您也可以通过使用一些XmlSerializer属性黑魔法来做到这一点:

1
2
3
4
5
6
7
8
9
10
[XmlIgnore]
public bool MyValue { get; set; }

/// <summary>Get a value purely for serialization purposes</summary>
[XmlElement("MyValue")]
public string MyValueSerialize
{
    get { return this.MyValue ?"1" :"0"; }
    set { this.MyValue = XmlConvert.ToBoolean(value); }
}

如果您对此成员不满意,还可以使用其他属性将其隐藏于智能感知中!这不是一个完美的解决方案,但是比实现IXmlSerializable更快。


您可以实现IXmlSerializable,它将允许您随意更改类的序列化输出。这将需要创建3个方法GetSchema(),ReadXml(XmlReader r)和WriteXml(XmlWriter r)。实现接口时,将调用这些方法,而不是.NET尝试序列化对象本身。

可以在以下位置找到示例:

http://www.developerfusion.co.uk/show/4639/和

http://msdn.microsoft.com/zh-CN/library/system.xml.serialization.ixmlserializable.aspx


不,不使用默认的System.Xml.XmlSerializer:您需要将数据类型更改为int才能实现此目的,或者搞乱提供自己的序列化代码(可能,但不太有趣)。

但是,您当然可以简单地对生成的XML进行后处理,而不是使用XSLT或简单地使用字符串替换。在开发时间和运行时间上都有点骇人听闻,但是很快。


推荐阅读

    linux命令行模式网络?

    linux命令行模式网络?,网络,基础,系统,服务,管理,工作,命令,信息,中级,设备,l

    linux命令行模式登录?

    linux命令行模式登录?,系统,密码,信息,状态,情况,终端,环境,管理,电脑,位置,l

    linux退出命令模式?

    linux退出命令模式?,状态,档案,命令,环境,密码,终端,文件,模式,编辑,端口,lin

    linux命令模式加行?

    linux命令模式加行?,工作,地址,系统,命令,工具,正规,信息,时间,第一,模式,Lin

    linux命令行模式使用?

    linux命令行模式使用?,工作,地址,目录,信息,名称,系统,管理,命令,文件,标准,l

    linux反序列化命令?

    linux反序列化命令?,状态,数据,情况,环境,网络,适当,下来,接口,对象,序列,序

    linux切换成命令模式?

    linux切换成命令模式?,密码,系统,工具,模式,命令,首页,状态,图形界面,终端,

    linux命令行模式清页?

    linux命令行模式清页?,工作,系统,命令,信息,地址,目录,内容,文件,操作,功能,l

    linux进入命令行模式?

    linux进入命令行模式?,系统,地址,情况,工作,命令,终端,首页,信息,目录,界面,l

    linux底线模式命令?

    linux底线模式命令?,系统,档案,密码,状态,工作,命令,模式,文件,明文,界面,lin

    linux启用命令模式?

    linux启用命令模式?,系统,密码,数字,首页,电脑,情况,终端,界面,模式,命令,安

    linux命令行模式联网?

    linux命令行模式联网?,系统,网络,地址,密码,软件,检测,信息,工具,终端,界面,l

    linux回到命令行模式?

    linux回到命令行模式?,系统,密码,状态,工具,电脑,终端,界面,环境,地方,命令,

    linux命令模式联网?

    linux命令模式联网?,网络,系统,工具,软件,密码,地址,最新,信息,工作,数据,lin

    linux进去命令模式?

    linux进去命令模式?,系统,密码,首页,终端,命令,界面,窗口,选项,桌面,用户,lin

    linux命令模式全屏?

    linux命令模式全屏?,系统,工具,电脑,数据,位置,命令,虚拟机,分辨率,字符串,

    linux中回到命令模式?

    linux中回到命令模式?,系统,密码,情况,状态,终端,环境,信息,首页,界面,命令,

    linux命令行模式6?

    linux命令行模式6?,系统,设计,信息,工作,终端,首页,庞大,服务,地方,环境,linu

    linux怎么用命令模式?

    linux怎么用命令模式?,工作,地址,系统,信息,管理,命令,目录,情况,图形界面,

    linux插入命令模式?

    linux插入命令模式?,工作,系统,地址,管理,信息,时间,命令,目录,平均,项目,Lin