Sdílet prostřednictvím


XmlAnyElementAttribute Třída

Definice

Určuje, že člen (pole, které vrací pole XmlElement nebo XmlNode objektů) obsahuje objekty, které představují jakýkoli element XML, který nemá žádný odpovídající člen v objektu, který je 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 pole s názvem AllElements , které vrátí pole XmlElement objektů.

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

Návod

Při práci v přenosné knihovně tříd, jako je silverlight, Windows Phone nebo windows Store App project, a používáte rozhraní .NET Framework 4.0.3 a vyšší, použijte XElement nebo XNode místo XmlElement a XmlNode.

XmlAnyElementAttribute Umožňuje obsahovat libovolná data (jako elementy XML), která lze odeslat jako součást dokumentu XML, například metadata odeslaná jako součást dokumentu.

Použijte pole XmlAnyElementAttribute , které vrací pole XmlElement nebo XmlNode objekty. 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 se objekt vygeneruje jako elementy NEBO uzly XML, i když nemají odpovídající člen (nebo členy) v objektu, který je serializován. Pokud při použití atributu Name zadáte hodnotu vlastnosti, musí mít všechny XmlElement objekty XmlNode vložené do pole 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 XmlNode musí mít také stejný název a obor názvů hodnoty. Pokud není zadána žádná Name hodnota, XmlElementXmlNode objekty 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 objektu, který je deserializován, jsou shromažďovány v poli. Po deserializaci iterujte kolekcí XmlElement položek ke zpracování dat. Pokud zadáte Name hodnotu, pole obsahuje pouze elementy XML s tímto názvem. Pokud nezadáte Name hodnotu, pole obsahuje všechny prvky, které nemají odpovídající člen třídy. Pokud třída obsahuje více než jedno pole, na které je atribut použit, použijte Namek rozlišení obsahu polí , nebo Name a Namespace vlastnosti. Pokud taková třída (s více poli) obsahuje také jedno pole, které nemá žádné odlišné hodnoty vlastností nastavené (jinými slovy Name a Namespace) během deserializace, obsahuje toto pole všechny neznámé elementy XML, které ještě nejsou obsaženy v ostatních polích. Pokud třída obsahuje více než jedno pole, které nemá odlišné Namenebo Name a Namespace nastavenou hodnotu, chování během deserializace není určeno.

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

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

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

Poznámka:

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

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

Konstruktory

Name Description
XmlAnyElementAttribute()

Inicializuje novou instanci XmlAnyElementAttribute třídy.

XmlAnyElementAttribute(String, String)

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

XmlAnyElementAttribute(String)

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

Vlastnosti

Name Description
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 tento Attribute.

(Zděděno od Attribute)

Metody

Name Description
Equals(Object)

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

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

Vrátí kód hash pro tuto instanci.

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

Získá Type aktuální instance.

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

Při přepsání v odvozené třídě určuje, zda hodnota této instance je 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á určuje, zda se tato instance rovná zadanému objektu.

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

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

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

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

(Zděděno od Object)

Explicitní implementace rozhraní

Name Description
_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é