XmlArrayItemAttribute 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.
Vertegenwoordigt een kenmerk dat de afgeleide typen aangeeft die in XmlSerializer een geserialiseerde matrix kunnen worden geplaatst.
public ref class XmlArrayItemAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlArrayItemAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)>]
type XmlArrayItemAttribute = class
inherit Attribute
Public Class XmlArrayItemAttribute
Inherits Attribute
- Overname
- Kenmerken
Voorbeelden
In het volgende voorbeeld wordt een klasse geserialiseerd Group die een veld bevat dat Employees een matrix met Employee objecten retourneert. In het voorbeeld wordt het XmlArrayItemAttribute veld toegepast, waardoor het XmlSerializer objecten van zowel het basisklassetype () als het afgeleide klassetype (EmployeeManager) in de geserialiseerde matrix kan invoegen.
using System;
using System.IO;
using System.Xml.Serialization;
public class Group
{
/* The XmlArrayItemAttribute allows the XmlSerializer to insert
both the base type (Employee) and derived type (Manager)
into serialized arrays. */
[XmlArrayItem(typeof(Manager)),
XmlArrayItem(typeof(Employee))]
public Employee[] Employees;
/* Use the XmlArrayItemAttribute to specify types allowed
in an array of Object items. */
[XmlArray]
[XmlArrayItem (typeof(int),
ElementName = "MyNumber"),
XmlArrayItem (typeof(string),
ElementName = "MyString"),
XmlArrayItem(typeof(Manager))]
public object [] 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("TypeDoc.xml");
test.DeserializeObject("TypeDoc.xml");
}
public void SerializeObject(string filename)
{
// Creates a new XmlSerializer.
XmlSerializer s = new XmlSerializer(typeof(Group));
// Writing the XML file to disk requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
Group group = new Group();
Manager manager = new Manager();
Employee emp1 = new Employee();
Employee emp2 = new Employee();
manager.Name = "Consuela";
manager.Level = 3;
emp1.Name = "Seiko";
emp2.Name = "Martina";
Employee [] emps = new Employee[3]{manager, emp1, emp2};
group.Employees = emps;
// Creates an int and a string and assigns to ExtraInfo.
group.ExtraInfo = new Object[3]{43, "Extra", manager};
// Serializes the object, and closes the StreamWriter.
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("Members:");
foreach(Employee e in g.Employees)
{
Console.WriteLine("\t" + e.Name);
}
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml.Serialization
Public Class Group
' The XmlArrayItemAttribute allows the XmlSerializer to insert
' both the base type (Employee) and derived type (Manager)
' into serialized arrays.
<XmlArrayItem(GetType(Manager)), _
XmlArrayItem(GetType(Employee))> _
Public Employees() As Employee
' Use the XmlArrayItemAttribute to specify types allowed
' in an array of Object items.
<XmlArray(), _
XmlArrayItem(GetType(Integer), ElementName := "MyNumber"), _
XmlArrayItem(GetType(String), ElementName := "MyString"), _
XmlArrayItem(GetType(Manager))> _
Public ExtraInfo() As Object
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("TypeDoc.xml")
test.DeserializeObject("TypeDoc.xml")
End Sub
Public Sub SerializeObject(ByVal filename As String)
' Creates a new XmlSerializer.
Dim s As New XmlSerializer(GetType(Group))
' Writing the XML file to disk requires a TextWriter.
Dim writer As New StreamWriter(filename)
Dim group As New Group()
Dim manager As New Manager()
Dim emp1 As New Employee()
Dim emp2 As New Employee()
manager.Name = "Consuela"
manager.Level = 3
emp1.Name = "Seiko"
emp2.Name = "Martina"
Dim emps() As Employee = {manager, emp1, emp2}
group.Employees = emps
' Creates an int and a string and assigns to ExtraInfo.
group.ExtraInfo = New Object() {43, "Extra", manager}
' Serializes the object, and closes the StreamWriter.
s.Serialize(writer, group)
writer.Close()
End Sub
Public Sub DeserializeObject(ByVal 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("Members:")
Dim e As Employee
For Each e In g.Employees
Console.WriteLine(ControlChars.Tab & e.Name)
Next e
End Sub
End Class
Opmerkingen
De XmlArrayItemAttribute 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.
U kunt het XmlArrayItemAttribute toepassen op elk openbaar lees-/schrijflid dat een matrix retourneert of toegang biedt tot een matrix. Een veld dat bijvoorbeeld een matrix met objecten, een verzameling, een ArrayListof een klasse retourneert die de IEnumerable interface implementeert.
Het XmlArrayItemAttribute ondersteunt polymorfisme, met andere woorden, het maakt het mogelijk XmlSerializer om afgeleide objecten toe te voegen aan een matrix. Stel dat een klasse met de naam Mammal is afgeleid van een basisklasse met de naam Animal. Stel dat een klasse met de naam MyAnimals een veld bevat dat een matrix met Animal objecten retourneert. Als u wilt toestaan dat zowel het XmlSerializer als Animal het type worden geserialiseerd, past u het MammalXmlArrayItemAttribute veld tweemaal toe, telkens wanneer u een van de twee acceptabele typen opgeeft.
Note
U kunt meerdere exemplaren van de XmlArrayItemAttribute of XmlElementAttribute typen objecten opgeven die in de matrix kunnen worden ingevoegd.
Note
De serialisatie van een veld of eigenschap die een interface of matrix met interfaces retourneert, wordt niet ondersteund.
Zie Kenmerken voor meer informatie over het gebruik van kenmerken.
Note
U kunt het woord XmlArrayItem in uw code gebruiken in plaats van langer XmlArrayItemAttribute.
Constructors
| Name | Description |
|---|---|
| XmlArrayItemAttribute() |
Initialiseert een nieuw exemplaar van de XmlArrayItemAttribute klasse. |
| XmlArrayItemAttribute(String, Type) |
Initialiseert een nieuw exemplaar van de XmlArrayItemAttribute klasse en geeft de naam op van het XML-element dat is gegenereerd in het XML-document en de Type naam die kan worden ingevoegd in het gegenereerde XML-document. |
| XmlArrayItemAttribute(String) |
Initialiseert een nieuw exemplaar van de XmlArrayItemAttribute klasse en geeft de naam op van het XML-element dat is gegenereerd in het XML-document. |
| XmlArrayItemAttribute(Type) |
Initialiseert een nieuw exemplaar van de XmlArrayItemAttribute klasse en geeft aan welke Type kan worden ingevoegd in de geserialiseerde matrix. |
Eigenschappen
| Name | Description |
|---|---|
| DataType |
Hiermee wordt het XML-gegevenstype van het gegenereerde XML-element opgehaald of ingesteld. |
| 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 de naam van het gegenereerde XML-element is gekwalificeerd. |
| IsNullable |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het XmlSerializer lid moet worden geserialiseerd als een lege XML-tag met het |
| Namespace |
Hiermee wordt de naamruimte van het gegenereerde XML-element opgehaald of ingesteld. |
| NestingLevel |
Hiermee haalt u het niveau op in een hiërarchie van XML-elementen die van invloed zijn op het XmlArrayItemAttribute niveau. |
| Type |
Hiermee haalt u het type op dat is toegestaan in een matrix of stelt u dit in. |
| 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
- XmlArrayAttribute
- XmlSerializer
- XmlArrayItems
- XmlAttributeOverrides
- XmlAttributes
- Inleiding tot XML-serialisatie
- Procedure: Geef een alternatieve elementnaam op voor een XML-stream
- XML-serialisatie beheren met behulp van kenmerken
- Voorbeelden van XML-serialisatie
- Xml Schema Definition Tool (Xsd.exe)