XmlArrayItemAttribute.IsNullable Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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 null
en .
#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
.