次の方法で共有


XmlArrayItemAttribute.IsNullable プロパティ

定義

XmlSerializer で、xsi:nil 属性が true に設定された空の XML タグとしてメンバーをシリアル化する必要があるかどうかを示す値を取得または設定します。

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

プロパティ値

Boolean

XmlSerializertrue 属性を生成する場合は xsi:nil。それ以外の場合は false で、インスタンスは作成されません。 既定値は、true です。

次の例では、オブジェクトの配列を返すフィールド Groupを含む、という名前 EmployeesEmployee クラスをシリアル化します。 から派生する名前の Manager 2 番目の Employeeクラス。 An XmlArrayItemAttribute は、配列にオブジェクトとオブジェクトの XmlSerializer 両方 EmployeeManager 挿入できることを指定します。 この例では、プロパティを 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 ドキュメントは要素のコンテンツが見つからないことを明示的に通知できます。 このような要素には、次に設定trueされた属性xsi:nilが含まれています。 詳細については、「 XML スキーマ パート 1: 構造体」というタイトルの World Wide Web Consortium 仕様を参照してください。

プロパティが IsNullable 指定されている場合は truexsi:nil 属性が設定されているクラス メンバーに対して null生成されます。 たとえば、名前付きの MyStringArray フィールドを null設定すると、次の XmlSerializer XML コードが生成されます。

<MyStringArray xsi:nil = "true" />  

プロパティが指定されている IsNullable 場合、 falseXML 要素は生成されません。

注意

値型を IsNullablenullめることができないため、値型として型指定されたメンバーにプロパティを適用することはできません。

適用対象