如何在XSD生成的C#XML中省略XML元素?

如何在XSD生成的C#XML中省略XML元素?,c#,.net,xml,xsd,C#,.net,Xml,Xsd,在XSD中,Minoccurs为0,对于元素,nillable为true 但是如果我不设置元素值,它会将其视为null,并且服务器上的记录会被清除。当满足某些条件时,有没有一种方法可以告诉它从输出XML中省略该元素,但在其他情况下可以忽略该元素 <xs:element name='CLS_CD' minOccurs='0' nillable='true' type='xdv:stringLen20'/> 如果正在使用,则可以通过包含PropertyNameSpecified属性

在XSD中,Minoccurs为0,对于元素,nillable为true

但是如果我不设置元素值,它会将其视为null,并且服务器上的记录会被清除。当满足某些条件时,有没有一种方法可以告诉它从输出XML中省略该元素,但在其他情况下可以忽略该元素

 <xs:element name='CLS_CD' minOccurs='0' nillable='true' type='xdv:stringLen20'/>

如果正在使用,则可以通过包含PropertyNameSpecified属性来控制是否发出值

另一种选择是使用特殊的 模式来创建布尔字段 由XmlSerializer识别,并且 将XmlIgnoreAttribute应用于 领域模式是在 指定了PropertyName的形式。对于 例如,如果有一个名为 “MyFirstName”您还可以创建一个 名为“MyFirstNameSpecified”的字段 它指示XmlSerializer 是否生成XML元素 名为“我的名字”

例如,如果您这样声明类:

public class Data
{
    [XmlIgnore]
    public bool CLS_CDSpecified { get; set; }
    [XmlElement(IsNullable=true)]
    public string CLS_CD { get; set; }
}
然后可以不序列化任何内容、显式nil值或实际值:

var serializer = new XmlSerializer(typeof(Data));

var serializesNothing = new Data();
serializesNothing.CLS_CD = null;
serializesNothing.CLS_CDSpecified = false;
serializer.Serialize(Console.Out, serializesNothing);
Console.WriteLine();
Console.WriteLine();

var serializesNil = new Data();
serializesNil.CLS_CD = null;
serializesNil.CLS_CDSpecified = true;
serializer.Serialize(Console.Out, serializesNil);
Console.WriteLine();
Console.WriteLine();

var serializesValue = new Data();
serializesValue.CLS_CD = "value";
serializesValue.CLS_CDSpecified = true;
serializer.Serialize(Console.Out, serializesValue);
输出:

<?xml version="1.0" encoding="IBM437"?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" />

<?xml version="1.0" encoding="IBM437"?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <CLS_CD xsi:nil="true" />
</Data>

<?xml version="1.0" encoding="IBM437"?>
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <CLS_CD>value</CLS_CD>
</Data>

价值

请发布您的代码/上下文。