使用可选标记反序列化XML
本文关键字:反序列化 XML | 更新日期: 2023-09-27 18:21:58
我有一个带有可选标记的XML,如下所示:
<Config>
<CheckForCompleteTransform>true</CheckForCompleteTransform>
<!-- more tags -->
</Config>
以及类定义:
public class config {
[System.Xml.Serialization.XmlElement("CheckForCompleteTransform")]
public bool? CheckForCompleteTransform { get; set; }
}
如果我将标记设置为我在上面的示例XML中提供的内容,或者完全省略它,这将起作用。但是如果我将标签提供为<MyTag/>
呢?如果使用这种表示法,我希望序列化程序将类中相应的属性设置为true,但我会得到一个
System.FormatException:字符串文字"对于类型无效布尔
关于如何实现这一点,有什么想法吗?
在此处检查
u可以在类中使用[XmlElement("CheckForCompleteTransform",IsNullable=true)]CheckForCompleteTransform属性
public class config
{
[XmlElement("CheckForCompleteTransform", IsNullable = true)]
public bool? CheckForCompleteTransform { get; set; }
}
并将xsi:nil="true"属性添加到CheckForCompleteTransform标记中,如以下
<CheckForCompleteTransform xsi:nil="true" />
我自己还没有验证过,但你试过添加吗
[XmlElement(IsNullable = true)]
属性到CheckForCompleteTransform?
编辑:
好的,和一起怎么样
DefaultValueAttribute(true);