XmlElementAttribute Sınıf

Tanım

bir ortak alan veya özelliğin, onu içeren nesneyi seri hale getirdiğinde veya seri durumdan XmlSerializer çıkardığında bir XML öğesini temsil ettiğini gösterir.

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
Devralma
XmlElementAttribute
Öznitelikler

Örnekler

Aşağıdaki örnek adlı Group bir sınıfı serileştirir ve birkaç üyesine uygular XmlElementAttribute . adlı Employees alan bir nesne dizisi Employee döndürür. Bu durumda, XmlElementAttribute sonuçta elde edilen XML'in iç içe yerleştirilmeyeceğini belirtir (bu, bir dizideki öğelerin varsayılan davranışıdır).

#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::Collections;
using namespace System::IO;
using namespace System::Xml::Serialization;
public ref class Employee
{
public:
   String^ Name;
};

public ref class Manager: public Employee
{
public:
   int Level;
};

public ref class Group
{
public:

   /* 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")]
   array<Employee^>^Employees;

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

   [XmlElement(DataType="hexBinary")]
   array<Byte>^HexBytes;

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

   [XmlElement(Type=::Manager::typeid)]
   Employee^ Manager;

   [XmlElement(Int32::typeid,
   ElementName="ObjectNumber"),
   XmlElement(String::typeid,
   ElementName="ObjectString")]
   ArrayList^ ExtraInfo;
};

void SerializeObject( String^ filename )
{
   // Create the XmlSerializer.
   XmlSerializer^ s = gcnew XmlSerializer( Group::typeid );

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

   /* Create an instance of the group to serialize, and set
      its properties. */
   Group^ group = gcnew Group;
   group->GroupID = 10.089f;
   group->IsActive = false;
   array<Byte>^temp0 = {Convert::ToByte( 100 )};
   group->HexBytes = temp0;
   Employee^ x = gcnew Employee;
   Employee^ y = gcnew Employee;
   x->Name = "Jack";
   y->Name = "Jill";
   array<Employee^>^temp1 = {x,y};
   group->Employees = temp1;
   Manager^ mgr = gcnew 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 = gcnew ArrayList;
   group->ExtraInfo->Add( 42 );
   group->ExtraInfo->Add( "Answer" );

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

void DeserializeObject( String^ filename )
{
   FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
   XmlSerializer^ x = gcnew XmlSerializer( Group::typeid );
   Group^ g = dynamic_cast<Group^>(x->Deserialize( fs ));
   Console::WriteLine( g->Manager->Name );
   Console::WriteLine( g->GroupID );
   Console::WriteLine( g->HexBytes[ 0 ] );
   IEnumerator^ myEnum = g->Employees->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Employee^ e = safe_cast<Employee^>(myEnum->Current);
      Console::WriteLine( e->Name );
   }
}

int main()
{
   SerializeObject( "FirstDoc.xml" );
   DeserializeObject( "FirstDoc.xml" );
}
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

Açıklamalar

, XmlElementAttribute bir nesneyi seri hale getirme veya seri durumdan çıkarma işlemini XmlSerializer denetleen bir öznitelik ailesine aittir. Benzer özniteliklerin tam listesi için bkz. XML Serileştirmesini Denetleen Öznitelikler.

XML belgesi genellikle her biri üç bölümden oluşan XML öğeleri içerir: olası özniteliklere sahip bir açma etiketi, bir kapanış etiketi ve etiketler arasındaki veriler. XML etiketleri iç içe yerleştirilebilir; diğer bir ifadeyle etiketler arasındaki veriler DE XML öğeleri olabilir. Bir öğenin başka bir öğeyi kapsayan bu kapasitesi, belgenin veri hiyerarşileri içermesine olanak tanır. XML öğesi öznitelikleri de içerebilir.

XmlElementAttribute Öğe adı ve ad alanı gibi XML öğelerinin özelliklerini denetlemek için ortak alanlara veya genel okuma/yazma özelliklerine uygulayın.

, XmlElementAttribute bir nesne dizisi döndüren bir alana birden çok kez uygulanabilir. Bunun amacı, diziye eklenebilen Type farklı türleri belirtmektir (özelliği aracılığıyla). Örneğin, aşağıdaki C# kodundaki dizi hem dizeleri hem de tamsayıları kabul eder.

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

Bu, aşağıdakine benzer bir XML ile sonuçlanabilir.

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

Bir özellik değeri belirtmeden ElementName birden çok kez uyguladığınızda XmlElementAttribute öğelerin kabul edilebilir nesnelerin türünden sonra adlandırıldığını unutmayın.

öğesini XmlElementAttribute bir dizi döndüren bir alana veya özelliğe uygularsanız, dizideki öğeler bir XML öğeleri dizisi olarak kodlanır.

Buna karşılık, böyle bir alan veya özelliğe uygulanmazsa XmlElementAttribute , dizideki öğeler, alan veya özelliğin adını taşıyan bir öğenin altında iç içe yerleştirilmiş bir öğe dizisi olarak kodlanır. (Dizinin seri hale getirilmeyi denetlemek için ve XmlArrayItemAttribute özniteliklerini kullanınXmlArrayAttribute.)

özelliğini, özgün alanın veya özelliğin türünden türetilen bir tür (yani, uygulamasını uyguladığınız XmlElementAttributealan veya özellik) belirtecek şekilde ayarlayabilirsinizType.

Bir alan veya özellik bir ArrayListdöndürürse, öğesinin XmlElementAttribute birden çok örneğini üyeye uygulayabilirsiniz. Her örnek için özelliğini diziye eklenebilen bir nesne türüne ayarlayın Type .

Öznitelikleri kullanma hakkında daha fazla bilgi için bkz . Öznitelikler.

Not

uzun yerine kodunuzda sözcüğünü XmlElementXmlElementAttributekullanabilirsiniz.

Oluşturucular

XmlElementAttribute()

XmlElementAttribute sınıfının yeni bir örneğini başlatır.

XmlElementAttribute(String)

sınıfının yeni bir örneğini XmlElementAttribute başlatır ve XML öğesinin adını belirtir.

XmlElementAttribute(String, Type)

öğesinin XmlElementAttribute yeni bir örneğini başlatır ve XML öğesinin adını ve uygulandığı üye XmlElementAttribute için türetilmiş bir türü belirtir. Bu üye türü, onu içeren nesneyi seri hale getirdiğinde XmlSerializer kullanılır.

XmlElementAttribute(Type)

sınıfının yeni bir örneğini XmlElementAttribute başlatır ve öğesinin uygulandığı üye XmlElementAttribute için bir tür belirtir. Bu tür, onu içeren nesneyi serileştirirken veya seri durumdan çıkarırken tarafından XmlSerializer kullanılır.

Özellikler

DataType

tarafından XmlSerializeroluşturulan XML öğesinin XML Şema tanımı (XSD) veri türünü alır veya ayarlar.

ElementName

Oluşturulan XML öğesinin adını alır veya ayarlar.

Form

Öğesinin nitelenmiş olup olmadığını belirten bir değer alır veya ayarlar.

IsNullable

özniteliği olarak ayarlanmış boş bir etiket xsi:nil olarak ayarlanmış bir üyeyi XmlSerializer seri hale getirmesi null gerekip gerekmediğini belirten bir değer alır veya ayarlartrue.

Namespace

Sınıf seri hale getirildiğinde sonuç veren XML öğesine atanan ad alanını alır veya ayarlar.

Order

Öğelerin seri hale getirildiği veya seri durumdan çıkarıldığı açık sırayı alır veya ayarlar.

Type

XML öğesini temsil etmek için kullanılan nesne türünü alır veya ayarlar.

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır

Ayrıca bkz.