c# - 使用可选标签反序列化 XML

标签 c# xml xml-serialization

我有一个带有可选标签的 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: the string literal '' is not valid for type Boolean

关于如何实现这一目标有什么想法吗?

最佳答案

检查这个here

您可以在类中使用[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" />

关于c# - 使用可选标签反序列化 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25867210/

相关文章:

c# - Entity.Attributes 和 Entity.FormattedValues 之间有什么区别?

c# - 字符串操作 - 这可以做得更好吗?

c# - 只获取 src 值

c# - 在 C# 中处理非常大的 XML 文件

c# - 如何阻止我的 System.Messaging.MessageQueue 将我的字符串包装在 XML 中?

c# - 查找在当前区域性中所有字母之后排序的字符串的最佳方法

PHP:如何让 <br/> 在 simplexml_load_file() var 中工作

Python 2.7 urllib2 在使用 xml 内容进行重定向时引发 urllib2.HTTPError 301

maven - 使用 Java 5 运行的 JAXB 编码异常 javax.xml.stream.FactoryConfigurationError

c# - Protobuf-net 序列化创建十六进制字符