我有一个带有可选标签的 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/