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.Gets or sets a value that indicates whether the XmlSerializer must serialize a member as an empty XML tag with the xsi:nil attribute set to 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
true se o XmlSerializer gerar o atributo xsi:nil; caso contrário, false e nenhuma instância será gerada.true if the XmlSerializer generates the xsi:nil attribute; otherwise, false, and no instance is generated. O padrão é true.The default is 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.The following example serializes a class named Group, which contains a field named Employees that returns an array of Employee objects. Uma segunda classe chamada Manager deriva de Employee .A second class named Manager derives from Employee. Um XmlArrayItemAttribute especifica que o XmlSerializer pode inserir ambos Employee os Manager objetos e na matriz.An XmlArrayItemAttribute specifies that the XmlSerializer can insert both Employee and Manager objects into the array. O exemplo define a IsNullable propriedade, informando assim, para XmlSerializer não gerar os xsi:nil objetos de atributo na matriz definida como null .The example sets the IsNullable property, thereby telling the XmlSerializer not to generate the xsi:nil attribute objects in the array set to 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.The XML schema specification for structures allows an XML document to explicitly signal that an element's content is missing. Esse elemento contém o atributo xsi:nil definido como true .Such an element contains the attribute xsi:nil set to true. Para obter mais informações, consulte a especificação de World Wide Web Consortium intitulada esquema XML parte 1: estruturas.For more information, see the World Wide Web Consortium specification titled XML Schema Part 1: Structures.
Se a IsNullable propriedade for true , o xsi:nil atributo será gerado para membros de classe que foram definidos como null .If the IsNullable property is true, the xsi:nil attribute is generated for class members that have been set to null. Por exemplo, se você definir um campo chamado MyStringArray como null , o XmlSerializer gerará o código XML a seguir.For example, if you set a field named MyStringArray to null, the XmlSerializer generates the following XML code.
<MyStringArray xsi:nil = "true" />
Se a IsNullable propriedade for false , nenhum elemento XML será gerado.If the IsNullable property is false, no XML element is generated.
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 .You cannot apply the IsNullable property to a member typed as a value type because a value type cannot contain null.