Sdílet prostřednictvím


XmlAnyElementAttribute Třída

Definice

Určuje, že člen (pole, které vrací pole XmlElement nebo XmlNode objekty) obsahuje objekty, které představují libovolný prvek XML, který nemá odpovídající člen v objektu serializován nebo deserializován.

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
Dědičnost
XmlAnyElementAttribute
Atributy

Příklady

Následující příklad použije XmlAnyElementAttribute na pole s názvem AllElements , které vrací pole XmlElement objektů.

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

Poznámky

Tip

Při práci s přenosnou knihovnou tříd, například v projektu Silverlight, Windows Phone nebo aplikace pro Windows Store, a používáte rozhraní .NET Framework 4.0.3 a vyšší, použijte místo XNodeXmlElement a XmlNodenebo XElement .

XmlAnyElementAttribute Použijte k zahrnutí libovolných dat (jako elementů XML), která lze odeslat jako součást dokumentu XML, například metadata odesílaná jako součást dokumentu.

Použijte na XmlAnyElementAttribute pole, které vrací pole XmlElement objektů nebo XmlNode . Takové pole lze použít dvěma způsoby, v závislosti na tom, zda je objekt serializován nebo deserializován. Při serializaci je objekt generován jako xml elementy nebo uzly, i když nemají odpovídající člen (nebo členy) v serializovaném objektu. Pokud při použití atributu Name zadáte hodnotu vlastnosti, všechny XmlElement objekty nebo XmlNode vložené do pole musí mít stejný název elementu a výchozí obor názvů, nebo je vyvolán výjimka. Pokud nastavíte Namespace hodnotu vlastnosti, musíte také nastavit Name vlastnost a XmlElement objekty nebo XmlNode musí mít také stejný název a hodnoty oboru názvů. Pokud není zadána žádná Name hodnota, XmlElement objekty nebo XmlNode mohou mít libovolný název elementu.

Při volání Deserialize metody XmlSerializer třídy všechny prvky, které nemají odpovídající člen v deserializovaném objektu jsou shromážděny v poli. Po deserializaci iterujte kolekcí XmlElement položek ke zpracování dat. Pokud zadáte Name hodnotu, bude pole obsahovat pouze elementy XML s tímto názvem. Pokud nezadáte Name hodnotu, obsahuje pole všechny prvky, které nemají odpovídající člen ve třídě . Pokud třída obsahuje více než jedno pole, na které je atribut použit, použijte Namevlastnosti , nebo Name a Namespace k rozlišení obsahu polí. Pokud taková třída (s více poli) obsahuje také jedno pole, které nemá nastaveny žádné hodnoty vlastností rozdílu (jinými slovy, Name a Namespace) během deserializace, toto pole obsahuje všechny neznámé elementy XML, které již nejsou obsaženy v ostatních polích. Pokud třída obsahuje více než jedno pole, které nemá sadu hodnot Name, nebo Name a Namespace , chování během deserializace není určeno.

Můžete také použít XmlAnyElementAttribute na pole, které vrací jeden XmlElement objekt. Pokud to uděláte, musíte použít vlastnosti a metody XmlElement třídy k rekurzivní iteraci neznámými elementy.

Na člena třídy můžete použít více instancí XmlAnyElementAttribute třídy , ale každá instance musí mít odlišnou Name hodnotu vlastnosti. Nebo pokud je pro každou instanci nastavená stejná Name vlastnost, musí být pro každou instanci nastavena jedinečná Namespace hodnota vlastnosti.

K UnknownNode událostem XmlSerializer a UnknownAttribute nedojde, pokud použijete XmlAnyElementAttribute na člena třídy.

Poznámka

Místo delšího XmlAnyElementAttributeslova můžete v kódu použít slovo XmlAnyElement .

Další informace o používání atributů najdete v tématu Atributy.

Konstruktory

XmlAnyElementAttribute()

Inicializuje novou instanci XmlAnyElementAttribute třídy .

XmlAnyElementAttribute(String)

Inicializuje novou instanci XmlAnyElementAttribute třídy a určuje název elementu XML vygenerovaný v dokumentu XML.

XmlAnyElementAttribute(String, String)

Inicializuje novou instanci XmlAnyElementAttribute třídy a určuje název elementu XML vygenerovaný v dokumentu XML a jeho obor názvů XML.

Vlastnosti

Name

Získá nebo nastaví název elementu XML.

Namespace

Získá nebo nastaví obor názvů XML vygenerovaný v dokumentu XML.

Order

Získá nebo nastaví explicitní pořadí, ve kterém jsou prvky serializovány nebo deserializovány.

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu .

(Zděděno od Attribute)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, které lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro

Viz také