XmlAnyAttributeAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa, że element członkowski (pole zwracające tablicę XmlAttribute obiektów) może zawierać dowolne atrybuty XML.
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
- Dziedziczenie
- Atrybuty
Przykłady
W poniższym przykładzie wszystkie nieznane atrybuty są zbierane w tablicy XmlAttribute obiektów. Aby wypróbować ten przykład, utwórz plik o nazwie UnknownAttributes.xml
zawierający następujący kod XML:
<?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
Uwagi
Użyj elementu XmlAnyAttributeAttribute , aby zawierać dowolne dane (jako atrybuty XML), które są wysyłane jako część dokumentu XML, takie jak metadane wysyłane w ramach dokumentu.
Zastosuj element XmlAnyAttributeAttribute do pola, które zwraca tablicę XmlAttribute obiektów lub XmlNode . Gdy Deserialize metoda XmlSerializer klasy jest wywoływana, wszystkie atrybuty XML, które nie mają odpowiadającej składowej w klasie deserializowanej, są zbierane w tablicy. Po deserializacji można wykonać iterację po kolekcji XmlAttribute elementów w celu przetworzenia danych.
Zdarzenia UnknownNode i UnknownAttributeXmlSerializer nie występują, jeśli zastosujesz XmlAnyAttributeAttribute element do składowej klasy.
Uwaga
Możesz użyć słowa XmlAnyAttribute
w kodzie zamiast dłuższego XmlAnyAttributeAttribute.
Aby uzyskać więcej informacji na temat używania atrybutów, zobacz Atrybuty.
Konstruktory
XmlAnyAttributeAttribute() |
Tworzy nowe wystąpienie XmlAnyAttributeAttribute klasy . |
Właściwości
TypeId |
Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu . (Odziedziczone po Attribute) |
Metody
Equals(Object) |
Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi. (Odziedziczone po Attribute) |
GetHashCode() |
Zwraca wartość skrótu dla tego wystąpienia. (Odziedziczone po Attribute) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
IsDefaultAttribute() |
Podczas zastępowania w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej. (Odziedziczone po Attribute) |
Match(Object) |
Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po Attribute) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie dla obiektu, który może służyć do pobierania informacji o typie dla interfejsu. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone po Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt. (Odziedziczone po Attribute) |