XmlElementAttribute Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Azt jelzi, hogy egy nyilvános mező vagy tulajdonság egy XML-elemet jelöl, amikor a XmlSerializer szerializálja vagy deszerializálja az azt tartalmazó objektumot.
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
- Öröklődés
- Attribútumok
Példák
Az alábbi példa szerializál egy elnevezett Group osztályt, és több tagjára alkalmazza.XmlElementAttribute A névvel ellátott Employees mező objektumtömböt Employee ad vissza. Ebben az esetben a XmlElementAttribute beállítás azt határozza meg, hogy az eredményként kapott XML nem lesz beágyazva (ez a tömb elemeinek alapértelmezett viselkedése).
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
Megjegyzések
Az XmlElementAttribute attribútumcsalád az objektum szerializálásának vagy deszerializálásának módját szabályozza XmlSerializer . A hasonló attribútumok teljes listáját az XML-szerializálást vezérlő attribútumok című témakörben találja.
Az XML-dokumentumok általában XML-elemeket tartalmaznak, amelyek mindegyike három részből áll: egy lehetséges attribútumokkal rendelkező nyitócímke, egy zárócímke és a címkék közötti adatok. Az XML-címkék beágyazhatók, vagyis a címkék közötti adatok XML-elemek is lehetnek. Az egyik elem ezen kapacitása lehetővé teszi a dokumentum számára, hogy adathierarchiákat tartalmazzon. Az XML-elemek attribútumokat is tartalmazhatnak.
A nyilvános mezőkre vagy a XmlElementAttribute nyilvános olvasási/írási tulajdonságokra alkalmazva szabályozhatja az XML-elemek jellemzőit, például az elem nevét és a névteret.
A XmlElementAttribute mező többször is alkalmazható olyan mezőre, amely objektumtömböt ad vissza. Ennek az a célja, hogy (a Type tulajdonságon keresztül) különböző típusokat adjon meg, amelyek beilleszthetők a tömbbe. A következő C#-kód tömbje például sztringeket és egész számokat is elfogad.
public class Things{
[XmlElement(Type = typeof(string)),
XmlElement(Type = typeof(int))]
public object[] StringsAndInts;
}
Ez az alábbihoz hasonló XML-t eredményez.
<Things>
<string>Hello</string>
<int>999</int>
<string>World</string>
</Things>
Vegye figyelembe, hogy ha többször alkalmazza a XmlElementAttribute tulajdonságérték megadása ElementName nélkül, az elemek neve az elfogadható objektumok típusáról lesz elnevezve.
Ha egy XmlElementAttribute tömböt visszaadó mezőre vagy tulajdonságra alkalmazza, a tömb elemei XML-elemek sorozataként vannak kódolva.
Ezzel szemben, ha egy XmlElementAttribute ilyen mezőre vagy tulajdonságra nem alkalmazunk, a tömb elemei elemek sorozataként vannak kódolva, a mező vagy tulajdonság után elnevezett elem alá ágyazva. (A tömb szerializálásának szabályozásához használja az XmlArrayAttribute és XmlArrayItemAttribute az attribútumokat.)
A tulajdonságot úgy is beállíthatja Type , hogy az eredeti mező vagy tulajdonság típusából származtatott típust adjon meg – vagyis azt a mezőt vagy tulajdonságot, amelyre a XmlElementAttributemezőt alkalmazta.
Ha egy mező vagy tulajdonság egy értéket ad vissza ArrayList, a tagra több példányt XmlElementAttribute is alkalmazhat. Minden példány esetében állítsa a Type tulajdonságot a tömbbe beszúrható objektumtípusra.
Az attribútumok használatáról további információt az Attribútumok című témakörben talál.
Note
A hosszabb helyett használhatja a szót XmlElement a XmlElementAttributekódban.
Konstruktorok
| Name | Description |
|---|---|
| XmlElementAttribute() |
Inicializálja a XmlElementAttribute osztály új példányát. |
| XmlElementAttribute(String, Type) |
Inicializálja a XmlElementAttribute példány új példányát, és megadja az XML-elem nevét és annak a tagnak a származtatott típusát, amelyre az XmlElementAttribute alkalmazás vonatkozik. Ez a tagtípus akkor használatos, ha a XmlSerializer szerializálja az azt tartalmazó objektumot. |
| XmlElementAttribute(String) |
Inicializálja az XmlElementAttribute osztály új példányát, és megadja az XML-elem nevét. |
| XmlElementAttribute(Type) |
Inicializálja az XmlElementAttribute osztály új példányát, és megadja annak a tagnak a típusát, amelyre a rendszer alkalmazza az XmlElementAttribute osztályt. Ezt a típust használja az XmlSerializer azt tartalmazó objektum szerializálása vagy deszerializálása. |
Tulajdonságok
| Name | Description |
|---|---|
| DataType |
Lekéri vagy beállítja a által létrehozott XML-elem XML-sémadefiníciójának (XSD) adattípusát XmlSerializer. |
| ElementName |
Lekéri vagy beállítja a létrehozott XML-elem nevét. |
| Form |
Lekéri vagy beállít egy értéket, amely jelzi, hogy az elem minősített-e. |
| IsNullable |
Lekéri vagy beállítja azt az értéket, amely jelzi, hogy a XmlSerializer tagnak üres címkeként kell-e szerializálnia |
| Namespace |
Lekéri vagy beállítja az osztály szerializálásakor eredményül kapott XML-elemhez rendelt névteret. |
| Order |
Lekéri vagy beállítja az elemek szerializálásának vagy deszerializálásának explicit sorrendjét. |
| Type |
Lekéri vagy beállítja az XML-elem megjelenítéséhez használt objektumtípust. |
| TypeId |
Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap. (Öröklődés forrása Attribute) |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal. (Öröklődés forrása Attribute) |
| GetHashCode() |
A példány kivonatkódját adja vissza. (Öröklődés forrása Attribute) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| IsDefaultAttribute() |
Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke. (Öröklődés forrása Attribute) |
| Match(Object) |
Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e. (Öröklődés forrása Attribute) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
Explicit interfész-implementációk
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Névkészletet képez le a küldési azonosítók megfelelő készletére. (Öröklődés forrása Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók. (Öröklődés forrása Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1). (Öröklődés forrása Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz. (Öröklődés forrása Attribute) |
A következőre érvényes:
Lásd még
- XmlArrayAttribute
- XmlAttributeOverrides
- XmlAttributes
- XmlElementAttributes
- XmlElements
- XmlRootAttribute
- XmlSerializer
- Az XML-szerializálás bemutatása
- Útmutató: Alternatív elemnév megadása XML-adatfolyamhoz
- XML-szerializálás szabályozása attribútumokkal
- Példák XML-szerializálásra
- XML-sémadefiníciós eszköz (Xsd.exe)