Freigeben über


XmlAnyElementAttribute Klasse

Definition

Gibt an, dass das Element (ein Feld, das ein Array von XmlElement- oder XmlNode-Objekten zurückgibt) Objekte enthält, die ein XML-Element darstellen, das kein entsprechendes Element im Objekt darstellt, das serialisiert oder deserialisiert wird.

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
Vererbung
XmlAnyElementAttribute
Attribute

Beispiele

Im folgenden Beispiel wird das XmlAnyElementAttribute Feld AllElements angewendet, das ein Array von XmlElement Objekten zurückgibt.

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

Hinweise

Tipp

Beim Arbeiten in einer portablen Klassenbibliothek, z. B. in Silverlight, Windows Phone oder Windows Store-App-Projekt, und Sie verwenden .NET Framework 4.0.3 und höher, verwenden XElement oder XNode anstelle von XmlElement und XmlNode.

Verwenden Sie die XmlAnyElementAttribute Möglichkeit, beliebige Daten (als XML-Elemente) zu enthalten, die als Teil eines XML-Dokuments gesendet werden können, z. B. Metadaten, die als Teil des Dokuments gesendet werden.

Wenden Sie das XmlAnyElementAttribute Feld auf ein Feld an, das ein Array von XmlElement oder XmlNode Objekten zurückgibt. Ein solches Feld kann auf zwei Arten verwendet werden, je nachdem, ob ein Objekt serialisiert oder deserialisiert wird. Bei serialisierter Serialisierung wird das Objekt als XML-Elemente oder Knoten generiert, auch wenn es kein entsprechendes Element (oder member) im serialisierten Objekt gibt. Wenn Sie beim Anwenden des Attributs einen Name Eigenschaftswert angeben, müssen alle XmlElement oder XmlNode Objekte, die in das Array eingefügt wurden, denselben Elementnamen und den Standardnamespace aufweisen, oder eine Ausnahme wird ausgelöst. Wenn Sie den Namespace Eigenschaftswert festlegen, müssen Sie auch die Name Eigenschaft festlegen, und die oder XmlNode die XmlElement Objekte müssen auch denselben Namen und Namespacewerte aufweisen. Wenn kein Name Wert angegeben ist, können die XmlElement Objekte XmlNode einen beliebigen Elementnamen aufweisen.

Wenn Sie die Deserialize Methode der XmlSerializer Klasse aufrufen, werden alle Elemente, die nicht über ein entsprechendes Element im Objekt verfügen, das deserialisiert wird, im Array erfasst. Nach der Deserialisierung durchlaufen Sie die Sammlung von XmlElement Elementen, um die Daten zu verarbeiten. Wenn Sie einen Name Wert angeben, enthält das Array nur XML-Elemente mit diesem Namen. Wenn Sie keinen Wert angeben Name , enthält das Array alle Elemente, die kein entsprechendes Element in der Klasse aufweisen. Wenn eine Klasse mehrere Felder enthält, auf die das Attribut angewendet wird, verwenden Sie die Nameoder NameNamespace die Eigenschaften, um zwischen dem Inhalt der Arrays zu unterscheiden. Wenn eine solche Klasse (mit mehreren Feldern) auch ein Feld enthält, das keine abweichenden Eigenschaftswerte (mit anderen Worten Name , und Namespace) während der Deserialisierung enthält, enthält dieses Array alle unbekannten XML-Elemente, die noch nicht in den anderen Arrays enthalten sind. Wenn eine Klasse mehr als ein Feld enthält, das keine unterscheidungs- Nameoder NameNamespace Wertsätze aufweist, wird das Verhalten während der Deserialisierung nicht angegeben.

Sie können das XmlAnyElementAttribute Feld auch auf ein Feld anwenden, das ein einzelnes XmlElement Objekt zurückgibt. In diesem Fall müssen Sie die Eigenschaften und Methoden der XmlElement Klasse verwenden, um die unbekannten Elemente rekursiv zu durchlaufen.

Sie können mehrere Instanzen der XmlAnyElementAttribute Klasse auf ein Klassenelement anwenden, aber jede Instanz muss über einen eindeutigen Name Eigenschaftswert verfügen. Wenn die gleiche Name Eigenschaft für jede Instanz festgelegt wird, muss für jede Instanz ein eindeutiger Namespace Eigenschaftswert festgelegt werden.

Die UnknownNode Ereignisse UnknownAttribute und Ereignisse der XmlSerializer Klasse treten nicht auf, wenn Sie das XmlAnyElementAttribute Element einer Klasse anwenden.

Hinweis

Sie können das Wort XmlAnyElement in Ihrem Code anstelle der längeren XmlAnyElementAttributeVerwenden.

Weitere Informationen zur Verwendung von Attributen finden Sie unter "Attribute".

Konstruktoren

Name Beschreibung
XmlAnyElementAttribute()

Initialisiert eine neue Instanz der XmlAnyElementAttribute-Klasse.

XmlAnyElementAttribute(String, String)

Initialisiert eine neue Instanz der XmlAnyElementAttribute Klasse und gibt den IM XML-Dokument und dessen XML-Namespace generierten XML-Elementnamen an.

XmlAnyElementAttribute(String)

Initialisiert eine neue Instanz der XmlAnyElementAttribute Klasse und gibt den im XML-Dokument generierten XML-Elementnamen an.

Eigenschaften

Name Beschreibung
Name

Dient zum Abrufen oder Festlegen des XML-Elementnamens.

Namespace

Ruft den xml-Namespace ab, der im XML-Dokument generiert wird, oder legt den namespace fest.

Order

Dient zum Abrufen oder Festlegen der expliziten Reihenfolge, in der die Elemente serialisiert oder deserialisiert werden.

TypeId

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute.

(Geerbt von Attribute)

Methoden

Name Beschreibung
Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

(Geerbt von Attribute)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit denen die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden.

(Geerbt von Attribute)

Gilt für:

Weitere Informationen