【发布时间】:2017-11-27 03:59:40
【问题描述】:
我知道这个话题是重复的。这不是我第一次在XmlSerializer 上工作,而且我没有遇到这个问题。但是这一次,我不知道发生了什么。
public string comp_addr01
{
get
{
return this.comp_addr01Field;
}
set
{
this.comp_addr01Field = value;
}
}
[XmlIgnore]
public bool comp_addr01Specified { get { return true; } }
我测试了 comp_add01Specified 正在被调用,但未显示在 xml 输出中。
到目前为止,唯一的方法是添加XmlElement(IsNullable = true)
[XmlElement(IsNullable = true)]
public string comp_addr01
{
get
{
return this.comp_addr01Field;
}
set
{
this.comp_addr01Field = value;
}
}
但现在<comp_addr01 xsi:nil="true" /> xsi:nil="true" 已显示,但我不需要显示它。我不知道这是怎么回事
【问题讨论】:
-
实际上并不清楚您的问题是什么。 comp_add01Specified 不应包含在 xml 中,因为您有 XmlIgnore 。是不是 comp_addr01 没有包含在 xml 中?如果 IsNullable 为空,则不会包含它,这就是事情的工作方式。如果它不为空,它将被包括在内。
-
@TimRutter,感谢您的回复。关键是我希望 comp_addr01 始终出现在 Xml 文件中,无论它的值是否为空;因此,我使用 comp_addr01Sepcified 让 XmlSerializer 知道我需要包含此属性。虽然调用了 comp_addr01Specified,但 comp_addr01 永远不会出现,除非它不为空。在我添加属性
XmlElement(IsNullable = true)后,comp_addr01 开始出现。如果没记错的话,我之前应用了相同的概念并且没有使用 XmlElement 属性。这就是我发布问题的原因。也许我错过了什么。
标签: c# xml xml-serialization xmlserializer