XmlAnyElementAttribute Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
- 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) |