XmlElementAttribute Klas

Definitie

Geeft aan dat een openbaar veld of een eigenschap een XML-element vertegenwoordigt wanneer het XmlSerializer object dat het bevat serialiseert of deserialiseerd.

public ref class XmlElementAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlElementAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)>]
type XmlElementAttribute = class
    inherit Attribute
Public Class XmlElementAttribute
Inherits Attribute
Overname
XmlElementAttribute
Kenmerken

Voorbeelden

In het volgende voorbeeld wordt een klasse met de naam Group geserialiseerd en wordt de XmlElementAttribute klasse toegepast op verschillende leden. Het veld met de naam retourneert Employees een matrix met Employee objecten. In dit geval geeft u aan XmlElementAttribute dat de resulterende XML niet wordt genest (dit is het standaardgedrag van items in een matrix).

using System;
using System.Collections;
using System.IO;
using System.Xml.Serialization;

public class Group
{
   /* Set the element name and namespace of the XML element.
   By applying an XmlElementAttribute to an array,  you instruct
   the XmlSerializer to serialize the array as a series of XML
   elements, instead of a nested set of elements. */

   [XmlElement(
   ElementName = "Members",
   Namespace = "http://www.cpandl.com")]
   public Employee[] Employees;

   [XmlElement(DataType = "double",
   ElementName = "Building")]
   public double GroupID;

   [XmlElement(DataType = "hexBinary")]
   public byte [] HexBytes;

   [XmlElement(DataType = "boolean")]
   public bool IsActive;

   [XmlElement(Type = typeof(Manager))]
   public Employee Manager;

   [XmlElement(typeof(int),
   ElementName = "ObjectNumber"),
   XmlElement(typeof(string),
   ElementName = "ObjectString")]
   public ArrayList ExtraInfo;
}

public class Employee
{
   public string Name;
}

public class Manager:Employee{
   public int Level;
}

public class Run
{
    public static void Main()
    {
       Run test = new Run();
       test.SerializeObject("FirstDoc.xml");
       test.DeserializeObject("FirstDoc.xml");
    }

   public void SerializeObject(string filename)
   {
      // Create the XmlSerializer.
      XmlSerializer s = new XmlSerializer(typeof(Group));

      // To write the file, a TextWriter is required.
      TextWriter writer = new StreamWriter(filename);

      /* Create an instance of the group to serialize, and set
         its properties. */
      Group group = new Group();
      group.GroupID = 10.089f;
      group.IsActive = false;

      group.HexBytes = new byte[1]{Convert.ToByte(100)};

      Employee x = new Employee();
      Employee y = new Employee();

      x.Name = "Jack";
      y.Name = "Jill";

      group.Employees = new Employee[2]{x,y};

      Manager mgr = new Manager();
      mgr.Name = "Sara";
      mgr.Level = 4;
      group.Manager = mgr;

      /* Add a number and a string to the
      ArrayList returned by the ExtraInfo property. */
      group.ExtraInfo = new ArrayList();
      group.ExtraInfo.Add(42);
      group.ExtraInfo.Add("Answer");

      // Serialize the object, and close the TextWriter.
      s.Serialize(writer, group);
      writer.Close();
   }

   public void DeserializeObject(string filename)
   {
      FileStream fs = new FileStream(filename, FileMode.Open);
      XmlSerializer x = new XmlSerializer(typeof(Group));
      Group g = (Group) x.Deserialize(fs);
      Console.WriteLine(g.Manager.Name);
      Console.WriteLine(g.GroupID);
      Console.WriteLine(g.HexBytes[0]);
      foreach(Employee e in g.Employees)
      {
         Console.WriteLine(e.Name);
      }
   }
}
Imports System.Collections
Imports System.IO
Imports System.Xml.Serialization


Public Class Group
    ' Set the element name and namespace of the XML element.
    <XmlElement(ElementName := "Members", _
     Namespace := "http://www.cpandl.com")> _    
    Public Employees() As Employee
    
    <XmlElement(DataType := "double", _
     ElementName := "Building")> _
    Public GroupID As Double
    
    <XmlElement(DataType := "hexBinary")> _
    Public HexBytes() As Byte
    
    <XmlElement(DataType := "boolean")> _
    Public IsActive As Boolean
    
    <XmlElement(GetType(Manager))> _
    Public Manager As Employee
    
    <XmlElement(GetType(Integer), _
        ElementName := "ObjectNumber"), _
     XmlElement(GetType(String), _
        ElementName := "ObjectString")> _
    Public ExtraInfo As ArrayList
End Class

Public Class Employee
    Public Name As String
End Class

Public Class Manager
    Inherits Employee
    Public Level As Integer
End Class

Public Class Run
    
    Public Shared Sub Main()
        Dim test As New Run()
        test.SerializeObject("FirstDoc.xml")
        test.DeserializeObject("FirstDoc.xml")
    End Sub
    
    Public Sub SerializeObject(filename As String)
        ' Create the XmlSerializer.
        Dim s As New XmlSerializer(GetType(Group))
        
        ' To write the file, a TextWriter is required.
        Dim writer As New StreamWriter(filename)
        
        ' Create an instance of the group to serialize, and set
        ' its properties. 
        Dim group As New Group()
        group.GroupID = 10.089f
        group.IsActive = False
        
        group.HexBytes = New Byte() {Convert.ToByte(100)}
        
        Dim x As New Employee()
        Dim y As New Employee()
        
        x.Name = "Jack"
        y.Name = "Jill"
        
        group.Employees = New Employee() {x, y}
        
        Dim mgr As New Manager()
        mgr.Name = "Sara"
        mgr.Level = 4
        group.Manager = mgr
        
        ' Add a number and a string to the
        ' ArrayList returned by the ExtraInfo property. 
        group.ExtraInfo = New ArrayList()
        group.ExtraInfo.Add(42)
        group.ExtraInfo.Add("Answer")
        
        ' Serialize the object, and close the TextWriter.      
        s.Serialize(writer, group)
        writer.Close()
    End Sub    
    
    Public Sub DeserializeObject(filename As String)
        Dim fs As New FileStream(filename, FileMode.Open)
        Dim x As New XmlSerializer(GetType(Group))
        Dim g As Group = CType(x.Deserialize(fs), Group)
        Console.WriteLine(g.Manager.Name)
        Console.WriteLine(g.GroupID)
        Console.WriteLine(g.HexBytes(0))

        Dim e As Employee
        For Each e In g.Employees
            Console.WriteLine(e.Name)
        Next e
    End Sub
End Class

Opmerkingen

De XmlElementAttribute eigenschap behoort tot een reeks kenmerken die bepalen hoe een XmlSerializer object wordt geserialiseerd of gedeserialiseerd. Zie Kenmerken die XML-serialisatie regelen voor een volledige lijst met vergelijkbare kenmerken.

Een XML-document bevat meestal XML-elementen, die elk uit drie delen bestaan: een openingstag met mogelijke kenmerken, een afsluitende tag en de gegevens tussen de tags. XML-tags kunnen worden genest, dat wil gezegd, de gegevens tussen tags kunnen ook XML-elementen zijn. Met deze capaciteit van één element om een ander element in te sluiten, kan het document hiërarchieën met gegevens bevatten. Een XML-element kan ook kenmerken bevatten.

Pas de XmlElementAttribute op openbare velden of openbare lees-/schrijfeigenschappen toe om eigenschappen van de XML-elementen, zoals de elementnaam en naamruimte, te beheren.

De XmlElementAttribute kan meerdere keren worden toegepast op een veld dat een matrix met objecten retourneert. Het doel hiervan is om verschillende typen op te geven (via de Type eigenschap) die in de matrix kunnen worden ingevoegd. De matrix in de volgende C#-code accepteert bijvoorbeeld zowel tekenreeksen als gehele getallen.

public class Things{
   [XmlElement(Type = typeof(string)),
   XmlElement(Type = typeof(int))]
   public object[] StringsAndInts;
}

Dit resulteert in XML die er ongeveer als volgt uitziet.

<Things>
   <string>Hello</string>
   <int>999</int>
   <string>World</string>
</Things>

Houd er rekening mee dat wanneer u de XmlElementAttribute meerdere keren toepast zonder een ElementName eigenschapswaarde op te geven, de elementen worden vernoemd naar het type acceptabele objecten.

Als u de XmlElementAttribute waarde toepast op een veld of eigenschap die een matrix retourneert, worden de items in de matrix gecodeerd als een reeks XML-elementen.

Als een XmlElementAttribute veld of eigenschap daarentegen niet wordt toegepast op een dergelijk veld of een eigenschap, worden de items in de matrix gecodeerd als een reeks elementen, genest onder een element dat is vernoemd naar het veld of de eigenschap. (Gebruik de XmlArrayAttribute en XmlArrayItemAttribute kenmerken om te bepalen hoe een matrix wordt geserialiseerd.)

U kunt de Type eigenschap instellen om een type op te geven dat is afgeleid van het type van het oorspronkelijke veld of de oorspronkelijke eigenschap, het veld of de eigenschap waarop u de XmlElementAttributeeigenschap hebt toegepast.

Als een veld of eigenschap een ArrayListretourneert, kunt u meerdere exemplaren van het XmlElementAttribute lid toepassen. Stel voor elk exemplaar de Type eigenschap in op een type object dat in de matrix kan worden ingevoegd.

Zie Kenmerken voor meer informatie over het gebruik van kenmerken.

Note

U kunt het woord XmlElement in uw code gebruiken in plaats van langer XmlElementAttribute.

Constructors

Name Description
XmlElementAttribute()

Initialiseert een nieuw exemplaar van de XmlElementAttribute klasse.

XmlElementAttribute(String, Type)

Initialiseert een nieuw exemplaar van de XmlElementAttribute en geeft de naam van het XML-element en een afgeleid type op voor het lid waarop de XmlElementAttribute toepassing is toegepast. Dit lidtype wordt gebruikt wanneer het XmlSerializer object dat het bevat serialiseert.

XmlElementAttribute(String)

Initialiseert een nieuw exemplaar van de XmlElementAttribute klasse en geeft de naam van het XML-element op.

XmlElementAttribute(Type)

Initialiseert een nieuw exemplaar van de XmlElementAttribute klasse en geeft een type op voor het lid waarop de XmlElementAttribute klasse wordt toegepast. Dit type wordt gebruikt bij het XmlSerializer serialiseren of deserialiseren van het object dat het bevat.

Eigenschappen

Name Description
DataType

Hiermee wordt het XSD-gegevenstype (XML Schema Definition) opgehaald of ingesteld van het XML-element dat wordt gegenereerd door het XmlSerializer.

ElementName

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

Form

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het element is gekwalificeerd.

IsNullable

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het XmlSerializer lid moet worden geserialiseerd dat is ingesteld null als een lege tag met het xsi:nil kenmerk ingesteld op true.

Namespace

Hiermee wordt de naamruimte opgehaald of ingesteld die is toegewezen aan het XML-element dat resulteert wanneer de klasse wordt geserialiseerd.

Order

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

Type

Hiermee wordt het objecttype opgehaald of ingesteld dat wordt gebruikt om het XML-element weer te geven.

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