XmlElementAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt an, dass ein öffentliches Feld oder eine Eigenschaft ein XML-Element darstellt, wenn die XmlSerializer das Objekt serialisiert oder deserialisiert, das es enthält.
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
- Vererbung
- Attribute
Beispiele
Im folgenden Beispiel wird eine Klasse mit dem Namen Group serialisiert und auf XmlElementAttribute mehrere member angewendet. Das benannte Employees Feld gibt ein Array von Employee Objekten zurück. In diesem Fall gibt die XmlElementAttribute Zeichenfolge an, dass das resultierende XML nicht geschachtelt wird (das Standardverhalten von Elementen in einem Array).
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
Hinweise
Dies XmlElementAttribute gehört zu einer Familie von Attributen, die steuert, wie das XmlSerializer Serialisieren oder Deserialisieren eines Objekts. Eine vollständige Liste ähnlicher Attribute finden Sie unter Attributes That Control XML Serialization.
Ein XML-Dokument enthält in der Regel XML-Elemente, die jeweils aus drei Teilen bestehen: einem öffnenden Tag mit möglichen Attributen, einem schließenden Tag und den Daten zwischen den Tags. XML-Tags können geschachtelt werden, d. h. die Daten zwischen Tags können auch XML-Elemente sein. Diese Kapazität eines Elements zum Einschließen eines anderen Elements ermöglicht es dem Dokument, Hierarchien von Daten zu enthalten. Ein XML-Element kann auch Attribute enthalten.
Wenden Sie die XmlElementAttribute Öffentlichen Felder oder öffentliche Lese-/Schreibeigenschaften an, um Die Merkmale der XML-Elemente wie elementname und Namespace zu steuern.
Dies XmlElementAttribute kann mehrmals auf ein Feld angewendet werden, das ein Array von Objekten zurückgibt. Dies dient zum Angeben (über die Type Eigenschaft) verschiedene Typen, die in das Array eingefügt werden können. Beispielsweise akzeptiert das Array im folgenden C#-Code sowohl Zeichenfolgen als auch ganze Zahlen.
public class Things{
[XmlElement(Type = typeof(string)),
XmlElement(Type = typeof(int))]
public object[] StringsAndInts;
}
Dies führt zu XML, die etwa wie folgt aussehen können.
<Things>
<string>Hello</string>
<int>999</int>
<string>World</string>
</Things>
Beachten Sie, dass die Elemente nach dem Typ der zulässigen Objekte benannt werden, wenn Sie das XmlElementAttribute Mehrfache anwenden, ohne einen ElementName Eigenschaftswert anzugeben.
Wenn Sie das XmlElementAttribute Feld oder eine Eigenschaft anwenden, das ein Array zurückgibt, werden die Elemente im Array als Sequenz von XML-Elementen codiert.
Wenn ein XmlElementAttribute solches Feld oder eine solche Eigenschaft nicht angewendet wird, werden die Elemente im Array als Eine Abfolge von Elementen codiert, die unter einem Element geschachtelt sind, das nach dem Feld oder der Eigenschaft benannt ist. (Verwenden Sie die XmlArrayAttribute Attribute, XmlArrayItemAttribute um zu steuern, wie ein Array serialisiert wird.)
Sie können die Type Eigenschaft so festlegen, dass ein Typ angegeben wird, der vom Typ des ursprünglichen Felds oder der Ursprünglichen Eigenschaft abgeleitet wird, d. h. das Feld oder die Eigenschaft, auf das Bzw. die Sie die XmlElementAttributeEigenschaft angewendet haben.
Wenn ein Feld oder eine Eigenschaft einen ArrayListWert zurückgibt, können Sie mehrere Instanzen des XmlElementAttribute Elements anwenden. Legen Sie für jede Instanz die Type Eigenschaft auf einen Objekttyp fest, der in das Array eingefügt werden kann.
Weitere Informationen zur Verwendung von Attributen finden Sie unter "Attribute".
Hinweis
Sie können das Wort XmlElement in Ihrem Code anstelle der längeren XmlElementAttributeVerwenden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| XmlElementAttribute() |
Initialisiert eine neue Instanz der XmlElementAttribute-Klasse. |
| XmlElementAttribute(String, Type) |
Initialisiert eine neue Instanz des XmlElementAttribute XML-Elements und gibt den Namen des XML-Elements und einen abgeleiteten Typ für das Element an, auf das die XmlElementAttribute Element angewendet wird. Dieser Membertyp wird verwendet, wenn das XmlSerializer Objekt serialisiert wird, das es enthält. |
| XmlElementAttribute(String) |
Initialisiert eine neue Instanz der XmlElementAttribute Klasse und gibt den Namen des XML-Elements an. |
| XmlElementAttribute(Type) |
Initialisiert eine neue Instanz der XmlElementAttribute Klasse und gibt einen Typ für das Element an, auf das die XmlElementAttribute Klasse angewendet wird. Dieser Typ wird vom XmlSerializer Serialisieren oder Deserialisieren des Objekts verwendet, das es enthält. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| DataType |
Dient zum Abrufen oder Festlegen des XML-Schemadefinitions-Datentyps (XSD) des XML-Elements, das von der XmlSerializer. |
| ElementName |
Dient zum Abrufen oder Festlegen des Namens des generierten XML-Elements. |
| Form |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob das Element qualifiziert ist. |
| IsNullable |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob das XmlSerializer Element serialisieren muss, das als leeres Tag festgelegt |
| Namespace |
Ruft den Namespace ab, der dem XML-Element zugewiesen ist, das beim Serialisieren der Klasse resultiert, oder legt diesen fest. |
| Order |
Dient zum Abrufen oder Festlegen der expliziten Reihenfolge, in der die Elemente serialisiert oder deserialisiert werden. |
| Type |
Dient zum Abrufen oder Festlegen des Objekttyps, der zum Darstellen des XML-Elements verwendet wird. |
| 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
- XmlArrayAttribute
- XmlAttributeOverrides
- XmlAttributes
- XmlElementAttributes
- XmlElements
- XmlRootAttribute
- XmlSerializer
- Einführung in die XML-Serialisierung
- Vorgehensweise: Angeben eines alternativen Elementnamens für einen XML-Stream
- Steuern der XML-Serialisierung mithilfe von Attributen
- Beispiele für die XML-Serialisierung
- XML Schema Definition-Tool (Xsd.exe)