XmlAnyElementAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa, że element członkowski (pole zwracające tablicę XmlElement obiektów lub XmlNode obiektów) zawiera obiekty reprezentujące dowolny element XML, który nie ma odpowiadającego mu elementu członkowskiego w obiekcie, który jest serializowany lub deserializowany.
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
- Dziedziczenie
- Atrybuty
Przykłady
Poniższy przykład dotyczy XmlAnyElementAttribute pola o nazwie AllElements
, które zwraca tablicę XmlElement obiektów.
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
Uwagi
Porada
Podczas pracy w przenośnej bibliotece klas, takiej jak w programie Silverlight, Windows Phone lub w projekcie Aplikacji ze Sklepu Windows, używasz .NET Framework 4.0.3 lub nowszejXmlElement, użyj polecenia XElement lub XNode w miejscu i XmlNode.
Użyj elementu XmlAnyElementAttribute , aby zawierać dowolne dane (jako elementy XML), które mogą być wysyłane jako część dokumentu XML, takie jak metadane wysyłane w ramach dokumentu.
Zastosuj element XmlAnyElementAttribute do pola zwracającego tablicę XmlElement obiektów lub XmlNode . Takie pole może być używane na dwa sposoby, w zależności od tego, czy obiekt jest serializowany, czy deserializowany. Po serializacji obiekt jest generowany jako elementy XML lub węzły, mimo że nie mają odpowiedniego elementu członkowskiego (lub elementów członkowskich) w obiekcie, który jest serializowany. Jeśli podczas stosowania atrybutu określisz Name wartość właściwości, wszystkie XmlElement obiekty XmlNode wstawione do tablicy muszą mieć taką samą nazwę elementu i domyślną przestrzeń nazw lub zgłaszany jest wyjątek. Jeśli ustawisz Namespace wartość właściwości, musisz również ustawić Name właściwość, a XmlElement obiekty lub XmlNode muszą również mieć taką samą nazwę i wartości przestrzeni nazw. Jeśli nie Name określono żadnej wartości, XmlElement obiekty lub XmlNode mogą mieć dowolną nazwę elementu.
Po wywołaniu Deserialize metody XmlSerializer klasy wszystkie elementy, które nie mają odpowiedniego elementu członkowskiego w obiekcie, który jest deserializowany, są zbierane w tablicy. Po deserializacji iteracja przez kolekcję XmlElement elementów w celu przetworzenia danych. Jeśli określisz wartość, tablica Name zawiera tylko elementy XML o tej nazwie. Jeśli nie określisz Name wartości, tablica zawiera wszystkie elementy, które nie mają odpowiedniego elementu członkowskiego w klasie. Jeśli klasa zawiera więcej niż jedno pole, do którego zastosowano atrybut, użyj Namewłaściwości lub , NameNamespace aby odróżnić zawartość tablic. Jeśli taka klasa (z wieloma polami) zawiera również jedno pole, które nie ma żadnych różnicowych wartości właściwości ustawionych (innymi słowy Name , i Namespace) podczas deserializacji, ta tablica zawiera wszystkie nieznane elementy XML, które nie są jeszcze zawarte w innych tablicach. Jeśli klasa zawiera więcej niż jedno pole, które nie ma innego Namezestawu wartości lub Name , Namespace zachowanie podczas deserializacji jest nieokreślone.
Można również zastosować pole XmlAnyElementAttribute zwracające pojedynczy XmlElement obiekt. W tym celu należy użyć właściwości i metod XmlElement klasy, aby cyklicznie iterować przez nieznane elementy.
Można zastosować wiele wystąpień elementu XmlAnyElementAttribute do składowej klasy, ale każde wystąpienie musi mieć unikatową Name wartość właściwości. Lub jeśli ta sama Name właściwość jest ustawiona dla każdego wystąpienia, dla każdego wystąpienia musi być ustawiona odrębna Namespace wartość właściwości.
Zdarzenia UnknownNode i UnknownAttributeXmlSerializer nie występują, jeśli zastosujesz element XmlAnyElementAttribute członkowski klasy.
Uwaga
Możesz użyć słowa XmlAnyElement
w kodzie zamiast dłuższego XmlAnyElementAttribute.
Aby uzyskać więcej informacji na temat używania atrybutów, zobacz Atrybuty.
Konstruktory
XmlAnyElementAttribute() |
Inicjuje nowe wystąpienie klasy XmlAnyElementAttribute. |
XmlAnyElementAttribute(String) |
Inicjuje XmlAnyElementAttribute nowe wystąpienie klasy i określa nazwę elementu XML wygenerowaną w dokumencie XML. |
XmlAnyElementAttribute(String, String) |
Inicjuje XmlAnyElementAttribute nowe wystąpienie klasy i określa nazwę elementu XML wygenerowaną w dokumencie XML i jego przestrzeni nazw XML. |
Właściwości
Name |
Pobiera lub ustawia nazwę elementu XML. |
Namespace |
Pobiera lub ustawia przestrzeń nazw XML wygenerowaną w dokumencie XML. |
Order |
Pobiera lub ustawia jawną kolejność, w której elementy są serializowane lub deserializowane. |
TypeId |
Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego elementu Attribute. (Odziedziczone po Attribute) |
Metody
Equals(Object) |
Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi. (Odziedziczone po Attribute) |
GetHashCode() |
Zwraca wartość skrótu dla tego wystąpienia. (Odziedziczone po Attribute) |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
IsDefaultAttribute() |
W przypadku zastąpienia w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej. (Odziedziczone po Attribute) |
Match(Object) |
W przypadku zastąpienia w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po Attribute) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie obiektu, którego można użyć do pobrania informacji o typie interfejsu. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone po Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt. (Odziedziczone po Attribute) |