Comparteix a través de


XmlArrayItemAttribute.IsNullable Propiedad

Definición

Obtiene o establece un valor que indica si XmlSerializer debe serializar un miembro como una etiqueta XML vacía con el atributo xsi:nil establecido en 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 de propiedad

Boolean

Es true si XmlSerializer genera el atributo xsi:nil; en caso contrario, es false y no se genera ninguna instancia. De manera predeterminada, es true.

Ejemplos

En el ejemplo siguiente se serializa una clase denominada Group, que contiene un campo denominado Employees que devuelve una matriz de Employee objetos. Una segunda clase denominada Manager deriva de Employee. Especifica XmlArrayItemAttribute que puede XmlSerializer insertar objetos Employee y Manager en la matriz. En el ejemplo se establece la IsNullable propiedad , lo que indica que XmlSerializer no se generen los objetos de xsi:nil atributo en la matriz establecida nullen .

#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

Comentarios

La especificación de esquema XML para estructuras permite que un documento XML indique explícitamente que falta contenido de un elemento. Este elemento contiene el atributo xsi:nil establecido en true. Para obtener más información, vea la especificación de World Wide Web Consortium titulada Esquema XML Parte 1: Estructuras.

Si la IsNullable propiedad es true, el xsi:nil atributo se genera para los miembros de clase que se han establecido en null. Por ejemplo, si establece un campo denominado MyStringArray en null, XmlSerializer genera el código XML siguiente.

<MyStringArray xsi:nil = "true" />  

Si la IsNullable propiedad es false, no se genera ningún elemento XML.

Nota

No se puede aplicar la IsNullable propiedad a un miembro escrito como un tipo de valor porque un tipo de valor no puede contener null.

Se aplica a