XmlAnyElementAttribute Klas

Definitie

Hiermee geeft u op dat het lid (een veld dat een matrix of XmlElementXmlNode objecten retourneert) objecten bevat die een XML-element vertegenwoordigen dat geen corresponderend lid heeft in het object dat wordt geserialiseerd of gedeserialiseerd.

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
Overname
XmlAnyElementAttribute
Kenmerken

Voorbeelden

In het volgende voorbeeld wordt het XmlAnyElementAttribute toegepast op een veld met de naam AllElements dat een matrix met XmlElement objecten retourneert.

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

Opmerkingen

Tip

Wanneer u werkt in een draagbare klassebibliotheek, zoals in Silverlight, Windows Phone of Windows Store App-project en u het .NET Framework 4.0.3 en hoger gebruikt, gebruikt u XElement of XNode in plaats van XmlElement en XmlNode.

Gebruik de XmlAnyElementAttribute lijst met willekeurige gegevens (als XML-elementen) die kunnen worden verzonden als onderdeel van een XML-document, zoals metagegevens die als onderdeel van het document worden verzonden.

Pas het XmlAnyElementAttribute veld toe op een veld dat een matrix of XmlElementXmlNode objecten retourneert. Een dergelijk veld kan op twee manieren worden gebruikt, afhankelijk van of een object wordt geserialiseerd of gedeserialiseerd. Wanneer het object wordt geserialiseerd, wordt het gegenereerd als XML-elementen of knooppunten, ook al hebben ze geen corresponderend lid (of leden) in het object dat wordt geserialiseerd. Als u een Name eigenschapswaarde opgeeft bij het toepassen van het kenmerk, moeten alle XmlElement objecten die XmlNode in de matrix zijn ingevoegd, dezelfde elementnaam en standaardnaamruimte hebben, of er wordt een uitzondering gegenereerd. Als u de Namespace eigenschapswaarde instelt, moet u de Name eigenschap ook instellen en moeten de XmlElement of XmlNode objecten ook dezelfde naam- en naamruimtewaarden hebben. Als er geen Name waarde is opgegeven, kunnen de XmlElement objecten XmlNode een elementnaam hebben.

Wanneer u de Deserialize methode van de XmlSerializer klasse aanroept, worden alle elementen die geen corresponderend lid hebben in het object dat wordt gedeserialiseerd, verzameld in de matrix. Na deserialisatie doorloopt u de verzameling XmlElement items om de gegevens te verwerken. Als u een Name waarde opgeeft, bevat de matrix alleen XML-elementen met die naam. Als u geen Name waarde opgeeft, bevat de matrix alle elementen die geen corresponderend lid in de klasse hebben. Als een klasse meer dan één veld bevat waarop het kenmerk wordt toegepast, gebruikt u de Nameof Name en Namespace eigenschappen om onderscheid te maken tussen de inhoud van de matrices. Als een dergelijke klasse (met meerdere velden) ook één veld bevat waarvoor geen differentiërende eigenschapswaarden zijn ingesteld (met andere woorden Name , en Namespace) tijdens de deserialisatie, bevat deze matrix onbekende XML-elementen die nog niet zijn opgenomen in de andere matrices. Als een klasse meer dan één veld bevat dat geen differentiërende Namewaarde NameNamespace of waardeset heeft, wordt het gedrag tijdens deserialisatie niet opgegeven.

U kunt het XmlAnyElementAttribute veld ook toepassen op een veld dat één XmlElement object retourneert. Als u dit doet, moet u de eigenschappen en methoden van de XmlElement klasse gebruiken om de onbekende elementen recursief te herhalen.

U kunt meerdere exemplaren van de XmlAnyElementAttribute instantie toepassen op een klasselid, maar elke instantie moet een afzonderlijke Name eigenschapswaarde hebben. Als dezelfde Name eigenschap voor elk exemplaar is ingesteld, moet er voor elk exemplaar een afzonderlijke Namespace eigenschapswaarde worden ingesteld.

De UnknownNode gebeurtenissen en UnknownAttribute gebeurtenissen van de XmlSerializer items vinden niet plaats als u het XmlAnyElementAttribute toepast op een lid van een klasse.

Note

U kunt het woord XmlAnyElement in uw code gebruiken in plaats van langer XmlAnyElementAttribute.

Zie Kenmerken voor meer informatie over het gebruik van kenmerken.

Constructors

Name Description
XmlAnyElementAttribute()

Initialiseert een nieuw exemplaar van de XmlAnyElementAttribute klasse.

XmlAnyElementAttribute(String, String)

Initialiseert een nieuw exemplaar van de XmlAnyElementAttribute klasse en geeft de naam van het XML-element op die is gegenereerd in het XML-document en de bijbehorende XML-naamruimte.

XmlAnyElementAttribute(String)

Initialiseert een nieuw exemplaar van de XmlAnyElementAttribute klasse en geeft de naam van het XML-element op die is gegenereerd in het XML-document.

Eigenschappen

Name Description
Name

Hiermee haalt u de naam van het XML-element op of stelt u deze in.

Namespace

Hiermee haalt u de XML-naamruimte op die in het XML-document is gegenereerd of stelt u deze in.

Order

Hiermee haalt u de expliciete volgorde op waarin de elementen worden geserialiseerd of gedeserialiseerd.

TypeId

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id.

(Overgenomen van Attribute)

Methoden

Name Description
Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
GetHashCode()

Retourneert de hash-code voor dit exemplaar.

(Overgenomen van Attribute)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsDefaultAttribute()

Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse.

(Overgenomen van Attribute)
Match(Object)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

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

Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's.

(Overgenomen van Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen.

(Overgenomen van Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1).

(Overgenomen van Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven.

(Overgenomen van Attribute)

Van toepassing op

Zie ook