Partilhar via


XmlArrayItemAttribute.IsNullable Propriedade

Definição

Obtém ou define um valor que indica se o XmlSerializer deve serializar um membro como uma marca de XML vazia com o atributo xsi:nil definido como true.

public:
 property bool IsNullable { bool get(); void set(bool value); };
public bool IsNullable { get; set; }
member this.IsNullable : bool with get, set
Public Property IsNullable As Boolean

Valor da propriedade

Boolean

true se o XmlSerializer gerar o atributo xsi:nil; caso contrário, false e nenhuma instância será gerada. O padrão é true.

Exemplos

O exemplo a seguir serializa uma classe chamada Group, que contém um campo chamado Employees que retorna uma matriz de Employee objetos. Uma segunda classe chamada Manager deriva de Employee. Especifica XmlArrayItemAttribute que a XmlSerializer matriz pode inserir objetos e Manager objetos Employee na matriz. O exemplo define a IsNullable propriedade, informando XmlSerializer assim para não gerar os xsi:nil objetos de atributo na matriz definida como null.

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;

public ref class Employee
{
public:
   String^ Name;
};

public ref class Manager: public Employee
{
public:
   int Level;
};

public ref class Group
{
public:

   [XmlArray(IsNullable=true)]
   [XmlArrayItem(Manager::typeid,IsNullable=false),
   XmlArrayItem(Employee::typeid,IsNullable=false)]
   array<Employee^>^Employees;
};

void SerializeObject( String^ filename )
{
   XmlSerializer^ s = gcnew XmlSerializer( Group::typeid );

   // To write the file, a TextWriter is required.
   TextWriter^ writer = gcnew StreamWriter( filename );

   // Creates the object to serialize.
   Group^ group = gcnew Group;

   // Creates a null Manager object.
   Manager^ mgr = nullptr;

   // Creates a null Employee object.
   Employee^ y = nullptr;
   array<Employee^>^temp = {mgr,y};
   group->Employees = temp;

   // Serializes the object and closes the TextWriter.
   s->Serialize( writer, group );
   writer->Close();
}

int main()
{
   SerializeObject( "TypeDoc.xml" );
}
using System;
using System.IO;
using System.Xml.Serialization;

public class Group
{
   [XmlArray(IsNullable = true)]
   [XmlArrayItem(typeof(Manager), IsNullable = false),
   XmlArrayItem(typeof(Employee), IsNullable = false)]
   public Employee[] Employees;
}

public class Employee
{
   public string Name;
}

public class Manager:Employee
{
   public int Level;
}

public class Run
{
   public static void Main()
   {
      Run test = new Run();
      test.SerializeObject("TypeDoc.xml");
   }

   public void SerializeObject(string filename)
   {
      XmlSerializer s = new XmlSerializer(typeof(Group));

      // To write the file, a TextWriter is required.
      TextWriter writer = new StreamWriter(filename);

      // Creates the object to serialize.
      Group group = new Group();

      // Creates a null Manager object.
      Manager mgr = null;

      // Creates a null Employee object.
      Employee y = null;

      group.Employees = new Employee[2] {mgr, y};

      // Serializes the object and closes the TextWriter.
      s.Serialize(writer, group);
      writer.Close();
   }
}
Option Explicit
Option Strict

Imports System.IO
Imports System.Xml.Serialization


Public Class Group
    <XmlArray(IsNullable := True), _
     XmlArrayItem(GetType(Manager), IsNullable := False), _
     XmlArrayItem(GetType(Employee), IsNullable := False)> _
    Public Employees() As Employee
End Class

Public Class Employee
    Public Name As String
End Class

Public Class Manager
    Inherits Employee
    Public Level As Integer
End Class


Public Class Run
    
    Public Shared Sub Main()
        Dim test As New Run()
        test.SerializeObject("TypeDoc.xml")
    End Sub    
    
    Public Sub SerializeObject(filename As String)
        Dim s As New XmlSerializer(GetType(Group))
        
        ' To write the file, a TextWriter is required.
        Dim writer As New StreamWriter(filename)
        
        ' Creates the object to serialize.
        Dim group As New Group()
        
        ' Creates a null Manager object.
        Dim mgr As Manager = Nothing
        
        ' Creates a null Employee object.
        Dim y As Employee = Nothing
        
        group.Employees = New Employee() {mgr, y}
        
        ' Serializes the object and closes the TextWriter.
        s.Serialize(writer, group)
        writer.Close()
    End Sub
End Class

Comentários

A especificação de esquema XML para estruturas permite que um documento XML sinalize explicitamente que o conteúdo de um elemento está ausente. Esse elemento contém o conjunto de atributos xsi:nil como true. Para obter mais informações, consulte a especificação do World Wide Web Consortium intitulada Esquema XML Parte 1: Estruturas.

Se a IsNullable propriedade for true, o xsi:nil atributo será gerado para membros de classe que foram definidos como null. Por exemplo, se você definir um campo nomeado MyStringArray como null, o XmlSerializer código XML a seguir será gerado.

<MyStringArray xsi:nil = "true" />  

Se a IsNullable propriedade for false, nenhum elemento XML será gerado.

Observação

Não é possível aplicar a IsNullable propriedade a um membro digitado como um tipo de valor porque um tipo de valor não pode conter null.

Aplica-se a