C# 以不同的方式将布尔序列化为XML
我正在使用C# 以不同的方式将布尔序列化为XML,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我正在使用XmlSerializer将类序列化为XML。该类包含几个布尔属性,它们按如下方式序列化: public bool Boolean1; public bool Boolean2; <Boolean1>true</Boolean1> <Boolean2>false</Boolean2> 公共布尔布尔布尔1; 公共布尔布尔2; 真的 假的 我希望生成的XML如下所示: <Boolean1/> 也就是说,真正的布尔值将显
XmlSerializer
将类序列化为XML。该类包含几个布尔属性,它们按如下方式序列化:
public bool Boolean1;
public bool Boolean2;
<Boolean1>true</Boolean1>
<Boolean2>false</Boolean2>
公共布尔布尔布尔1;
公共布尔布尔2;
真的
假的
我希望生成的XML如下所示:
<Boolean1/>
也就是说,真正的布尔值将显示为空标记,而错误的布尔值将根本不会显示。如果布尔值为false,我可以向两个布尔值添加ShouldSerializeX
方法以使元素消失,但是如果元素为true,我如何使标记名不包含任何内容呢
另外,是否有某种
[XmlIgnoreIfNull]
或[XmlIgnoreIfDefault]
属性会使大多数应该序列化
方法变得多余?然后必须根据节点的存在暗示一个值。。。如果有人发送了一些格式不正确的XML,但没有节点,你会说“哦,好吧,这是错误的”,实际上这是错误的答案。不确定这是否对您有影响,但是如果在其中显式地包含true或false对我来说会更舒服。实际上,由于false是默认值,因此如果节点没有出现,我将不得不暗示默认值,如果节点确实出现,则暗示“true”。它一直使用可空类型完成,您根本不希望出现空节点。