XmlAnyAttributeAttribute Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan bahwa anggota (bidang yang mengembalikan array XmlAttribute objek) dapat berisi atribut XML apa pun.
public ref class XmlAnyAttributeAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)]
public class XmlAnyAttributeAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)]
public class XmlAnyAttributeAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)>]
type XmlAnyAttributeAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)>]
type XmlAnyAttributeAttribute = class
inherit Attribute
Public Class XmlAnyAttributeAttribute
Inherits Attribute
- Warisan
- Atribut
Contoh
Contoh berikut mengumpulkan semua atribut yang tidak diketahui ke dalam array XmlAttribute objek. Untuk mencoba contoh, buat file bernama UnknownAttributes.xml
yang berisi XML berikut:
<?xml version="1.0" encoding="utf-8"?>
<Group xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
GroupType = 'Technical' GroupNumber = '42' GroupBase = 'Red'>
<GroupName>MyGroup</GroupName>
</Group>
#using <System.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Collections;
using namespace System::IO;
using namespace System::Xml::Serialization;
using namespace System::Xml;
public ref class Group
{
public:
String^ GroupName;
// The UnknownAttributes array will be used to collect all unknown
// attributes found when deserializing.
[XmlAnyAttributeAttribute]
array<XmlAttribute^>^XAttributes;
};
void SerializeObject( String^ filename, Object^ g )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid );
TextWriter^ writer = gcnew StreamWriter( filename );
ser->Serialize( writer, g );
writer->Close();
}
void DeserializeObject( String^ filename )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid );
// A FileStream is needed to read the XML document.
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
Group^ g = safe_cast<Group^>(ser->Deserialize( fs ));
fs->Close();
// Write out the data, including unknown attributes.
Console::WriteLine( g->GroupName );
Console::WriteLine( "Number of unknown attributes: {0}", g->XAttributes->Length );
for ( IEnumerator ^ e = g->XAttributes->GetEnumerator(); e->MoveNext(); )
{
XmlAttribute^ xAtt = safe_cast<XmlAttribute^>(e->Current);
Console::WriteLine( "{0}: {1}", xAtt->Name, xAtt->InnerXml );
}
SerializeObject( "AttributesAdded.xml", g );
}
int main()
{
// Deserialize the file containing unknown attributes.
DeserializeObject( "UnknownAttributes.xml" );
}
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
public class Group{
public string GroupName;
// The UnknownAttributes array will be used to collect all unknown
// attributes found when deserializing.
[XmlAnyAttribute]
public XmlAttribute[]XAttributes;
}
public class Test{
static void Main(){
Test t = new Test();
// Deserialize the file containing unknown attributes.
t.DeserializeObject("UnknownAttributes.xml");
}
private void DeserializeObject(string filename){
XmlSerializer ser = new XmlSerializer(typeof(Group));
// A FileStream is needed to read the XML document.
FileStream fs = new FileStream(filename, FileMode.Open);
Group g = (Group) ser.Deserialize(fs);
fs.Close();
// Write out the data, including unknown attributes.
Console.WriteLine(g.GroupName);
Console.WriteLine("Number of unknown attributes: " +
g.XAttributes.Length);
foreach(XmlAttribute xAtt in g.XAttributes){
Console.WriteLine(xAtt.Name + ": " + xAtt.InnerXml);
}
// Serialize the object again with the attributes added.
this.SerializeObject("AttributesAdded.xml",g);
}
private void SerializeObject(string filename, object g){
XmlSerializer ser = new XmlSerializer(typeof(Group));
TextWriter writer = new StreamWriter(filename);
ser.Serialize(writer, g);
writer.Close();
}
}
Imports System.IO
Imports System.Xml.Serialization
Imports System.Xml
Public Class Group
Public GroupName As String
' The UnknownAttributes array will be used to collect all unknown
' attributes found when deserializing.
<XmlAnyAttribute> _
Public UnknownAttributes()As XmlAttribute
End Class
Public Class Test
Shared Sub Main()
Dim t As Test = New Test()
' Deserialize the file containing unknown attributes.
t.DeserializeObject("UnknownAttributes.xml")
End Sub
Private Sub DeserializeObject(filename As String)
Dim ser As XmlSerializer = New XmlSerializer(GetType(Group))
' A FileStream is needed to read the XML document.
Dim fs As FileStream = New FileStream(filename, FileMode.Open)
Dim g As Group = CType(ser.Deserialize(fs), Group)
fs.Close()
' Write out the data, including unknown attributes.
Console.WriteLine(g.GroupName)
Console.WriteLine("Number of unknown attributes: " & _
g.UnknownAttributes.Length)
Dim xAtt As XmlAttribute
for each xAtt in g.UnknownAttributes
Console.WriteLine(xAtt.Name & ": " & xAtt.InnerXml)
Next
' Serialize the object again with the attributes added.
Me.SerializeObject("AttributesAdded.xml",g)
End Sub
Private Sub SerializeObject(filename As String, g As object)
Dim ser As XmlSerializer = New XmlSerializer(GetType(Group))
DIm writer As TextWriter = New StreamWriter(filename)
ser.Serialize(writer, g)
writer.Close()
End Sub
End Class
Keterangan
XmlAnyAttributeAttribute Gunakan untuk berisi data arbitrer (sebagai atribut XML) yang dikirim sebagai bagian dari dokumen XML, seperti, metadata yang dikirim sebagai bagian dari dokumen.
Terapkan ke XmlAnyAttributeAttribute bidang yang mengembalikan array XmlAttribute objek atau XmlNode . Deserialize Ketika metode kelas dipanggilXmlSerializer, semua atribut XML yang tidak memiliki anggota terkait di kelas yang dideserialisasi dikumpulkan dalam array. Setelah deserialisasi, Anda dapat melakukan iterasi melalui pengumpulan XmlAttribute item untuk memproses data.
Peristiwa UnknownNodeXmlSerializer dan UnknownAttribute tidak terjadi jika Anda menerapkannya XmlAnyAttributeAttribute ke anggota kelas.
Catatan
Anda dapat menggunakan kata XmlAnyAttribute
dalam kode Anda alih-alih lebih lama XmlAnyAttributeAttribute.
Untuk informasi selengkapnya tentang menggunakan atribut, lihat Atribut.
Konstruktor
XmlAnyAttributeAttribute() |
Membuat instans XmlAnyAttributeAttribute baru kelas. |
Properti
TypeId |
Ketika diimplementasikan di kelas turunan, mendapatkan pengidentifikasi unik untuk ini Attribute. (Diperoleh dari Attribute) |
Metode
Equals(Object) |
Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
GetHashCode() |
Mengembalikan kode hash untuk instans ini. (Diperoleh dari Attribute) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
IsDefaultAttribute() |
Ketika ditimpa di kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan. (Diperoleh dari Attribute) |
Match(Object) |
Saat ditimpa di kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai. (Diperoleh dari Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka. (Diperoleh dari Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1). (Diperoleh dari Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Menyediakan akses ke properti dan metode yang diekspos oleh objek. (Diperoleh dari Attribute) |