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 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
- 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) |