C#序列化跳过xsi:nil=“”;真“;如果自定义对象中提供了其他属性
本文关键字:对象 自定义 属性 其他 如果 xsi nil 序列化 | 更新日期: 2023-09-27 18:00:36
我不确定我是否已经确定了问题,但我的C#XML序列化似乎正在跳过添加"xsi:nil='true',如果存在(我不确定解决哪一个或如何解决)
- 提供了其他属性或
- 这是一个自定义对象
例如,
[System.Xml.Serialization.XmlElementAttribute("Custom", IsNullable = true)]
public customDataType Custom
{
get { return this.privateCustomField; }
set { this.privateCustomField= value; }
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.namespace.org")]
public partial class customDataType
{
private string attrField;
private string valueField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string AttrField
{
get { return this.attrField; }
set { this.attrField= value; }
}
/// <remarks/>
[System.Xml.Serialization.XmlTextAttribute()]
public string Value
{
get { return this.valueField; }
set { this.valueField = value;}
}
}
然后在我的课堂上,我创建了:
Custom mycustom = new Custom();
mycustom.AttrField = "7701003";
仅此而已(我不提供值)。当我序列化我的对象时,我得到的XML看起来像:
<自定义AttrField="7701003"/>
我想看看<自定义xsi:nil="true"AttrField="7701003"/>
也就是说,我没有添加nil="true"。我不确定,因为自定义的数据类型(而不是我在网上看到的int或string)或者有一个属性
我使用的类是使用XSD.exe 4.0.30319从XSD创建的。
谢谢!
如果不编辑类,自动生成类就无法工作。试试这个
[XmlRoot("Custom")]
public class Custom
{
[XmlElement("CustomDataType")]
public CustomDataType customDataType { get; set; }
}
[XmlRoot("CustomDataType")]
public partial class CustomDataType
{
[XmlAttribute("AttrField")]
public string attrField { get; set; }
[XmlAttribute("Value")]]
public string value {get;set;}
}
我最终没有使用以上内容,所以我不知道这是否有效。我很感激你的回答。由于类生成的大小(XSD的大小是我开始使用它的原因),我无法在项目完成时及时编辑所有对象。
目前还没有答案。