指定的模式被调用但没有效果 - 不工作(XmlSerializer)
Specified Pattern is called but has no effect - not working (XmlSerializer)
我知道这个话题是重复的。这不是我第一次处理 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" 显示了,但我不需要它显示。我不知道发生了什么乱七八糟的事情
如果 IsNullable 为假(或省略),则 comp_addr01 的空值将导致没有元素被添加到 属性 的 xml。在这种情况下,您不能指望序列化程序写出一个空标记,因为无法知道它稍后反序列化该空标记是否应该导致 null - 它可能只是您的对象的一个实例,没有已定义子属性。
如果 IsNullable 为真,那么当 属性 为 null 时,您将告诉序列化器创建一个带有 xsi:nil="true" 的元素 - xsi:nil 位告诉这个元素实际上是空的反序列化器。
XmlElementAttribute.IsNullable
"Gets or sets a value that indicates whether the XmlSerializer must serialize a member that is set to null as an empty tag with the xsi:nil attribute set to true."
我知道这个话题是重复的。这不是我第一次处理 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" 显示了,但我不需要它显示。我不知道发生了什么乱七八糟的事情
如果 IsNullable 为假(或省略),则 comp_addr01 的空值将导致没有元素被添加到 属性 的 xml。在这种情况下,您不能指望序列化程序写出一个空标记,因为无法知道它稍后反序列化该空标记是否应该导致 null - 它可能只是您的对象的一个实例,没有已定义子属性。
如果 IsNullable 为真,那么当 属性 为 null 时,您将告诉序列化器创建一个带有 xsi:nil="true" 的元素 - xsi:nil 位告诉这个元素实际上是空的反序列化器。
XmlElementAttribute.IsNullable
"Gets or sets a value that indicates whether the XmlSerializer must serialize a member that is set to null as an empty tag with the xsi:nil attribute set to true."