XmlAnyElementAttribute クラス

定義

メンバー (XmlElement オブジェクトまたは XmlNode オブジェクトの配列を返すフィールド) に、シリアル化または逆シリアル化対象のオブジェクト内に対応するメンバーがない任意の XML 要素を表すオブジェクトを含めるように指定します。

public ref class XmlAnyElementAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlAnyElementAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)>]
type XmlAnyElementAttribute = class
    inherit Attribute
Public Class XmlAnyElementAttribute
Inherits Attribute
継承
XmlAnyElementAttribute
属性

次の例では、 オブジェクトの XmlAnyElementAttribute 配列を返す という名前 AllElementsXmlElement フィールドに を適用します。

public ref class XClass
{
public:

   /* Apply the XmlAnyElementAttribute to a field returning an array
      of XmlElement objects. */

   [XmlAnyElement]
   array<XmlElement^>^AllElements;
};

public ref class Test
{
public:
   void DeserializeObject( String^ filename )
   {
      // Create an XmlSerializer.
      XmlSerializer^ mySerializer = gcnew XmlSerializer( XClass::typeid );

      // To read a file, a FileStream is needed.
      FileStream^ fs = gcnew FileStream( filename,FileMode::Open );

      // Deserialize the class.
      XClass^ x = dynamic_cast<XClass^>(mySerializer->Deserialize( fs ));

      // Read the element names and values.
      System::Collections::IEnumerator^ myEnum = x->AllElements->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         XmlElement^ xel = safe_cast<XmlElement^>(myEnum->Current);
         Console::WriteLine( "{0}: {1}", xel->LocalName, xel->Value );
      }
   }
};

int main()
{
   Test^ t = gcnew Test;
   t->DeserializeObject( "XFile.xml" );
}
public class XClass
{
   /* Apply the XmlAnyElementAttribute to a field returning an array
   of XmlElement objects. */
   [XmlAnyElement]
   public XmlElement[] AllElements;
}

public class Test
{
   public static void Main()
   {
      Test t = new Test();
      t.DeserializeObject("XFile.xml");
   }

   private void DeserializeObject(string filename)
   {
      // Create an XmlSerializer.
      XmlSerializer mySerializer = new XmlSerializer(typeof(XClass));

      // To read a file, a FileStream is needed.
      FileStream fs = new FileStream(filename, FileMode.Open);

      // Deserialize the class.
      XClass x = (XClass) mySerializer.Deserialize(fs);

      // Read the element names and values.
      foreach(XmlElement xel in x.AllElements)
         Console.WriteLine(xel.LocalName + ": " + xel.Value);
   }
}
Public Class XClass
    ' Apply the XmlAnyElementAttribute to a field returning an array
    ' of XmlElement objects.
    <XmlAnyElement()> Public AllElements() As XmlElement
End Class


Public Class Test
    
    Public Shared Sub Main()
        Dim t As New Test()
        t.DeserializeObject("XFile.xml")
    End Sub
    
    
    Private Sub DeserializeObject(filename As String)
        ' Create an XmlSerializer.
        Dim mySerializer As New XmlSerializer(GetType(XClass))
        
        ' To read a file, a FileStream is needed.
        Dim fs As New FileStream(filename, FileMode.Open)
        
        ' Deserialize the class.
        Dim x As XClass = CType(mySerializer.Deserialize(fs), XClass)
        
        ' Read the element names and values.
        Dim xel As XmlElement
        For Each xel In  x.AllElements
            Console.WriteLine((xel.LocalName & ": " & xel.Value))
        Next xel
    End Sub
End Class

注釈

ヒント

Silverlight、Windows Phone、Windows ストア アプリ プロジェクトなどのポータブル クラス ライブラリで作業していて、.NET Framework 4.0.3 以降を使用している場合は、 と XmlNodeXmlElement代わりに または XNode を使用XElementします。

ドキュメントの XmlAnyElementAttribute 一部として送信されるメタデータなど、XML ドキュメントの一部として送信できる任意のデータ (XML 要素として) を格納するには、 を使用します。

または XmlNode オブジェクトのXmlAnyElementAttribute配列XmlElementを返すフィールドに を適用します。 このようなフィールドは、オブジェクトがシリアル化されているか逆シリアル化されているかに応じて、2 つの方法で使用できます。 シリアル化されると、シリアル化されるオブジェクトに対応するメンバー (またはメンバー) がない場合でも、オブジェクトは XML 要素またはノードとして生成されます。 属性を適用するときにプロパティ値を Name 指定する場合、配列に挿入されるすべての XmlElement オブジェクトまたは XmlNode オブジェクトは、同じ要素名と既定の名前空間を持っている必要があります。または、例外がスローされます。 プロパティ値を設定する Namespace 場合は、 プロパティも設定 Name する必要があります XmlElement 。また、 オブジェクトまたは XmlNode オブジェクトの名前と名前空間の値も同じである必要があります。 値が指定されていないName場合、 オブジェクトまたは XmlNode オブジェクトには任意のXmlElement要素名を指定できます。

クラスの XmlSerializer メソッドをDeserialize呼び出すと、逆シリアル化されるオブジェクトに対応するメンバーを持たないすべての要素が配列に収集されます。 逆シリアル化の後、項目の XmlElement コレクションを反復処理してデータを処理します。 値を Name 指定すると、その名前の XML 要素のみが配列に含まれます。 値を Name 指定しない場合、配列には、 クラスに対応するメンバーを持たないすべての要素が含まれます。 属性が適用される複数のフィールドがクラスに含まれている場合は、 プロパティ、または Name プロパティ、および Namespace プロパティをName使用して配列の内容を区別します。 このようなクラス (複数のフィールドを含む) にも、逆シリアル化中に区別プロパティ値が設定されていない 1 つのフィールド (つまり、 および Namespace) が含まれている場合、Nameこの配列には、他の配列にまだ含まれていない不明な XML 要素が含まれます。 クラスに、区別 Nameする 、、または NameNamespace 値が設定されていない複数のフィールドが含まれている場合、逆シリアル化中の動作は指定されません。

1 つのXmlElementオブジェクトをXmlAnyElementAttribute返すフィールドに を適用することもできます。 その場合は、 クラスのプロパティとメソッド XmlElement を使用して、不明な要素を再帰的に反復処理する必要があります。

の複数の XmlAnyElementAttribute インスタンスをクラス メンバーに適用できますが、各インスタンスには個別 Name のプロパティ値が必要です。 または、インスタンスごとに同じ Name プロパティが設定されている場合は、インスタンスごとに個別 Namespace のプロパティ値を設定する必要があります。

UnknownNodeクラスのメンバーに をXmlSerializer適用XmlAnyElementAttributeした場合、 の および UnknownAttribute イベントは発生しません。

注意

この単語 XmlAnyElement は、長い XmlAnyElementAttributeではなく、コード内で使用できます。

属性の使用の詳細については、「 属性」を参照してください。

コンストラクター

XmlAnyElementAttribute()

XmlAnyElementAttribute クラスの新しいインスタンスを初期化します。

XmlAnyElementAttribute(String)

XmlAnyElementAttribute クラスの新しいインスタンスを初期化し、XML ドキュメントに生成される XML 要素名を指定します。

XmlAnyElementAttribute(String, String)

XmlAnyElementAttribute クラスの新しいインスタンスを初期化し、XML ドキュメントに生成される XML 要素名とその XML 名前空間を指定します。

プロパティ

Name

XML 要素名を取得または設定します。

Namespace

XML ドキュメントに生成される XML 名前空間を取得または設定します。

Order

要素のシリアル化または逆シリアル化を行う明示的な順序を取得または設定します。

TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。

(継承元 Attribute)

メソッド

Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。

(継承元 Attribute)
GetHashCode()

このインスタンスのハッシュ コードを返します。

(継承元 Attribute)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。

(継承元 Attribute)
Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。

(継承元 Attribute)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

明示的なインターフェイスの実装

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。

(継承元 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。

(継承元 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。

(継承元 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。

(継承元 Attribute)

適用対象

こちらもご覧ください