Поделиться через


XmlArrayItemAttribute.IsNullable Свойство

Определение

Возвращает или задает значение, указывающее, должен ли XmlSerializer сериализовать элемент в виде пустого XML-тега с заданным атрибутом xsi:niltrue.

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.

Примеры

В следующем примере сериализуется класс с именем, который содержит поле с именемGroupEmployees, которое возвращает массив Employee объектов. Второй класс, наследующийся Manager от Employee. Указывает XmlArrayItemAttribute , что XmlSerializer можно вставить оба Employee объекта и Manager объекты в массив. В примере задается IsNullable свойство, тем самым указывая XmlSerializer , что не создавать xsi:nil объекты атрибутов в наборе nullмассива.

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. Например, если задано поле с именем MyStringArraynull, XmlSerializer создается следующий XML-код.

<MyStringArray xsi:nil = "true" />

IsNullable Если свойство равноfalse, xml-элемент не создается.

Замечание

Невозможно применить IsNullable свойство к элементу, типизированному как типу значения, так как тип значения не может содержать null.

Применяется к