Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用可选标记反序列化XML_C#_Xml_Xml Serialization - Fatal编程技术网

C# 使用可选标记反序列化XML

C# 使用可选标记反序列化XML,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我有一个带有可选标记的XML,如下所示: <Config> <CheckForCompleteTransform>true</CheckForCompleteTransform> <!-- more tags --> </Config> 如果我将标记设置为我在上面的示例XML中提供的内容,或者完全忽略它,那么这是可行的。但是如果我以的形式提供标记,会怎么样?如果使用这种表示法,我希望序列化程序将类中相应的属性设置为tr

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

<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" />