使用可选标记反序列化XML

时间:2014-09-16 11:09:52

标签: c# xml xml-serialization

我有一个带有可选标签的XML,如下所示:

<Config>
    <MyTag>true<MyTag>
    <!-- more tags -->
</Config>

和班级定义:

public class config {
    [System.Xml.Serialization.XmlElement("CheckForCompleteTransform")]
    public bool? CheckForCompleteTransform { get; set; }
}

如果我将标记设置为我在上面的示例-XML中提供的标记,或者我完全省略它,则此方法有效。但是如果我将标签提供为<MyTag/>怎么办?如果使用这种表示法,我希望序列化程序将我的类中的相应属性设置为true,但是我想要一个

  

System.FormatException:字符串文字&#39;&#39;对于类型无效   布尔

关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:1)

我自己没有验证过这个问题,但您是否尝试过添加

[XmlElement(IsNullable = true)]

属于CheckForCompleteTransform?

编辑:

好的,和

一起怎么样
DefaultValueAttribute(true);

答案 1 :(得分:1)

选中此here

你可以在你的班级中使用 [XmlElement(&#34; CheckForCompleteTransform&#34;,IsNullable = true)] CheckForCompleteTransform属性

public class config
    {
        [XmlElement("CheckForCompleteTransform", IsNullable = true)]
        public bool? CheckForCompleteTransform { get; set; }
    }

并将 xsi:nil =&#34; true&#34; 属性添加到CheckForCompleteTransform标记中

<CheckForCompleteTransform xsi:nil="true" />