XmlAnyElementAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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) |