XmlArrayItemAttribute.IsNullable Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает значение, которое показывает, должен ли XmlSerializer выполнить сериализацию члена как пустого тега XML с атрибутом xsi:nil
, для которого установлено значение 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
Значение свойства
true
, если XmlSerializer генерирует атрибут xsi:nil
, в противном случае false
, а экземпляр не генерируется. Значение по умолчанию — true
.
Примеры
В следующем примере сериализуется класс с именем Group
, который содержит поле с именем Employees
, которое возвращает массив Employee
объектов. Второй класс с именем Manager
является производным от Employee
. Указывает XmlArrayItemAttribute , что XmlSerializer объект может вставлять в массив как объекты, так Employee
и Manager
объекты. В примере задается IsNullable свойство, тем самым указывая, что XmlSerializer объект атрибута не создается xsi:nil
в массиве 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
Комментарии
Спецификация XML-схемы для структур позволяет XML-документу явно сигнализировать о том, что содержимое элемента отсутствует. Такой элемент содержит атрибут xsi:nil
, равный true
. Дополнительные сведения см. в спецификации консорциума World Wide Web Consortium под названием XML Schema Part 1: Structures.
IsNullable Если свойство имеет значениеtrue
, xsi:nil
атрибут создается для членов класса, для которых задано значение null
. Например, если задать для поля имя MyStringArray
null
, XmlSerializer создается следующий XML-код.
<MyStringArray xsi:nil = "true" />
IsNullable Если свойство имеет значениеfalse
, xml-элемент не создается.
Примечание
Невозможно применить IsNullable свойство к члену, типизированному как типу значения, так как тип значения не может содержать null
.