C# 使用可选标记反序列化XML
我有一个带有可选标记的XML,如下所示:C# 使用可选标记反序列化XML,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我有一个带有可选标记的XML,如下所示: <Config> <CheckForCompleteTransform>true</CheckForCompleteTransform> <!-- more tags --> </Config> 如果我将标记设置为我在上面的示例XML中提供的内容,或者完全忽略它,那么这是可行的。但是如果我以的形式提供标记,会怎么样?如果使用这种表示法,我希望序列化程序将类中相应的属性设置为tr
<Config>
<CheckForCompleteTransform>true</CheckForCompleteTransform>
<!-- more tags -->
</Config>
如果我将标记设置为我在上面的示例XML中提供的内容,或者完全忽略它,那么这是可行的。但是如果我以
的形式提供标记,会怎么样?如果使用这种表示法,我希望序列化程序将类中相应的属性设置为true,但我得到一个
System.FormatException:字符串文字“”对于类型无效
布尔值
关于如何实现这一点,你有什么想法吗?我自己还没有验证过,但你有没有尝试添加
[XmlElement(IsNullable = true)]
是否将属性添加到CheckForCompletTransform
编辑:
好的,我们一起去怎么样
DefaultValueAttribute(true);
检查这个
您可以在类中使用[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" />
这是可行的,尽管我无法更改实际的XML(仅出于开发目的,我对其有控制权:(实际的XML由第三方生成,因此不可修改),但仍然存在相同的例外:“字符串文字“”对于布尔类型无效”
<CheckForCompleteTransform xsi:nil="true" />