Udostępnij za pośrednictwem


XmlAnyElementAttribute Klasa

Definicja

Określa, że element członkowski (pole zwracające tablicę XmlElement obiektów lub XmlNode obiektów) zawiera obiekty reprezentujące dowolny element XML, który nie ma odpowiadającego mu elementu członkowskiego w obiekcie, który jest serializowany lub deserializowany.

public ref class XmlAnyElementAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlAnyElementAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)>]
type XmlAnyElementAttribute = class
    inherit Attribute
Public Class XmlAnyElementAttribute
Inherits Attribute
Dziedziczenie
XmlAnyElementAttribute
Atrybuty

Przykłady

Poniższy przykład dotyczy XmlAnyElementAttribute pola o nazwie AllElements , które zwraca tablicę XmlElement obiektów.

public ref class XClass
{
public:

   /* Apply the XmlAnyElementAttribute to a field returning an array
      of XmlElement objects. */

   [XmlAnyElement]
   array<XmlElement^>^AllElements;
};

public ref class Test
{
public:
   void DeserializeObject( String^ filename )
   {
      // Create an XmlSerializer.
      XmlSerializer^ mySerializer = gcnew XmlSerializer( XClass::typeid );

      // To read a file, a FileStream is needed.
      FileStream^ fs = gcnew FileStream( filename,FileMode::Open );

      // Deserialize the class.
      XClass^ x = dynamic_cast<XClass^>(mySerializer->Deserialize( fs ));

      // Read the element names and values.
      System::Collections::IEnumerator^ myEnum = x->AllElements->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         XmlElement^ xel = safe_cast<XmlElement^>(myEnum->Current);
         Console::WriteLine( "{0}: {1}", xel->LocalName, xel->Value );
      }
   }
};

int main()
{
   Test^ t = gcnew Test;
   t->DeserializeObject( "XFile.xml" );
}
public class XClass
{
   /* Apply the XmlAnyElementAttribute to a field returning an array
   of XmlElement objects. */
   [XmlAnyElement]
   public XmlElement[] AllElements;
}

public class Test
{
   public static void Main()
   {
      Test t = new Test();
      t.DeserializeObject("XFile.xml");
   }

   private void DeserializeObject(string filename)
   {
      // Create an XmlSerializer.
      XmlSerializer mySerializer = new XmlSerializer(typeof(XClass));

      // To read a file, a FileStream is needed.
      FileStream fs = new FileStream(filename, FileMode.Open);

      // Deserialize the class.
      XClass x = (XClass) mySerializer.Deserialize(fs);

      // Read the element names and values.
      foreach(XmlElement xel in x.AllElements)
         Console.WriteLine(xel.LocalName + ": " + xel.Value);
   }
}
Public Class XClass
    ' Apply the XmlAnyElementAttribute to a field returning an array
    ' of XmlElement objects.
    <XmlAnyElement()> Public AllElements() As XmlElement
End Class


Public Class Test
    
    Public Shared Sub Main()
        Dim t As New Test()
        t.DeserializeObject("XFile.xml")
    End Sub
    
    
    Private Sub DeserializeObject(filename As String)
        ' Create an XmlSerializer.
        Dim mySerializer As New XmlSerializer(GetType(XClass))
        
        ' To read a file, a FileStream is needed.
        Dim fs As New FileStream(filename, FileMode.Open)
        
        ' Deserialize the class.
        Dim x As XClass = CType(mySerializer.Deserialize(fs), XClass)
        
        ' Read the element names and values.
        Dim xel As XmlElement
        For Each xel In  x.AllElements
            Console.WriteLine((xel.LocalName & ": " & xel.Value))
        Next xel
    End Sub
End Class

Uwagi

Porada

Podczas pracy w przenośnej bibliotece klas, takiej jak w programie Silverlight, Windows Phone lub w projekcie Aplikacji ze Sklepu Windows, używasz .NET Framework 4.0.3 lub nowszejXmlElement, użyj polecenia XElement lub XNode w miejscu i XmlNode.

Użyj elementu XmlAnyElementAttribute , aby zawierać dowolne dane (jako elementy XML), które mogą być wysyłane jako część dokumentu XML, takie jak metadane wysyłane w ramach dokumentu.

Zastosuj element XmlAnyElementAttribute do pola zwracającego tablicę XmlElement obiektów lub XmlNode . Takie pole może być używane na dwa sposoby, w zależności od tego, czy obiekt jest serializowany, czy deserializowany. Po serializacji obiekt jest generowany jako elementy XML lub węzły, mimo że nie mają odpowiedniego elementu członkowskiego (lub elementów członkowskich) w obiekcie, który jest serializowany. Jeśli podczas stosowania atrybutu określisz Name wartość właściwości, wszystkie XmlElement obiekty XmlNode wstawione do tablicy muszą mieć taką samą nazwę elementu i domyślną przestrzeń nazw lub zgłaszany jest wyjątek. Jeśli ustawisz Namespace wartość właściwości, musisz również ustawić Name właściwość, a XmlElement obiekty lub XmlNode muszą również mieć taką samą nazwę i wartości przestrzeni nazw. Jeśli nie Name określono żadnej wartości, XmlElement obiekty lub XmlNode mogą mieć dowolną nazwę elementu.

Po wywołaniu Deserialize metody XmlSerializer klasy wszystkie elementy, które nie mają odpowiedniego elementu członkowskiego w obiekcie, który jest deserializowany, są zbierane w tablicy. Po deserializacji iteracja przez kolekcję XmlElement elementów w celu przetworzenia danych. Jeśli określisz wartość, tablica Name zawiera tylko elementy XML o tej nazwie. Jeśli nie określisz Name wartości, tablica zawiera wszystkie elementy, które nie mają odpowiedniego elementu członkowskiego w klasie. Jeśli klasa zawiera więcej niż jedno pole, do którego zastosowano atrybut, użyj Namewłaściwości lub , NameNamespace aby odróżnić zawartość tablic. Jeśli taka klasa (z wieloma polami) zawiera również jedno pole, które nie ma żadnych różnicowych wartości właściwości ustawionych (innymi słowy Name , i Namespace) podczas deserializacji, ta tablica zawiera wszystkie nieznane elementy XML, które nie są jeszcze zawarte w innych tablicach. Jeśli klasa zawiera więcej niż jedno pole, które nie ma innego Namezestawu wartości lub Name , Namespace zachowanie podczas deserializacji jest nieokreślone.

Można również zastosować pole XmlAnyElementAttribute zwracające pojedynczy XmlElement obiekt. W tym celu należy użyć właściwości i metod XmlElement klasy, aby cyklicznie iterować przez nieznane elementy.

Można zastosować wiele wystąpień elementu XmlAnyElementAttribute do składowej klasy, ale każde wystąpienie musi mieć unikatową Name wartość właściwości. Lub jeśli ta sama Name właściwość jest ustawiona dla każdego wystąpienia, dla każdego wystąpienia musi być ustawiona odrębna Namespace wartość właściwości.

Zdarzenia UnknownNode i UnknownAttributeXmlSerializer nie występują, jeśli zastosujesz element XmlAnyElementAttribute członkowski klasy.

Uwaga

Możesz użyć słowa XmlAnyElement w kodzie zamiast dłuższego XmlAnyElementAttribute.

Aby uzyskać więcej informacji na temat używania atrybutów, zobacz Atrybuty.

Konstruktory

XmlAnyElementAttribute()

Inicjuje nowe wystąpienie klasy XmlAnyElementAttribute.

XmlAnyElementAttribute(String)

Inicjuje XmlAnyElementAttribute nowe wystąpienie klasy i określa nazwę elementu XML wygenerowaną w dokumencie XML.

XmlAnyElementAttribute(String, String)

Inicjuje XmlAnyElementAttribute nowe wystąpienie klasy i określa nazwę elementu XML wygenerowaną w dokumencie XML i jego przestrzeni nazw XML.

Właściwości

Name

Pobiera lub ustawia nazwę elementu XML.

Namespace

Pobiera lub ustawia przestrzeń nazw XML wygenerowaną w dokumencie XML.

Order

Pobiera lub ustawia jawną kolejność, w której elementy są serializowane lub deserializowane.

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego elementu Attribute.

(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 bieżące wystąpienie.

(Odziedziczone po Object)
IsDefaultAttribute()

W przypadku zastąpienia w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

W przypadku zastąpienia 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 obiektu, którego można użyć do pobrania informacji o typie 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)

Dotyczy

Zobacz też