XmlAnyElementAttribute Klass

Definition

Anger att medlemmen (ett fält som returnerar en matris med XmlElement eller XmlNode objekt) innehåller objekt som representerar alla XML-element som inte har någon motsvarande medlem i objektet som serialiseras eller deserialiseras.

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
Arv
XmlAnyElementAttribute
Attribut

Exempel

Följande exempel gäller XmlAnyElementAttribute för ett fält med namnet AllElements som returnerar en matris med XmlElement objekt.

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

Kommentarer

Tip

När du arbetar i ett portabelt klassbibliotek, till exempel i Silverlight, Windows Phone eller Windows Store App-projektet, och du använder .NET Framework 4.0.3 och senare, använder du XElement eller XNode i stället för XmlElement och XmlNode.

Använd för XmlAnyElementAttribute att innehålla godtyckliga data (som XML-element) som kan skickas som en del av ett XML-dokument, till exempel metadata som skickas som en del av dokumentet.

Använd på XmlAnyElementAttribute ett fält som returnerar en matris med XmlElement eller XmlNode objekt. Ett sådant fält kan användas på två sätt, beroende på om ett objekt serialiseras eller deserialiseras. När objektet serialiseras genereras det som XML-element eller -noder, även om de inte har någon motsvarande medlem (eller medlemmar) i objektet som serialiseras. Om du anger ett Name egenskapsvärde när du tillämpar attributet måste alla XmlElement objekt eller XmlNode objekt som infogas i matrisen ha samma elementnamn och standardnamnområde, eller så genereras ett undantag. Om du anger egenskapsvärdet Namespace måste du också ange Name egenskapen och objekten XmlElement eller XmlNode måste också ha samma namn och namnområdesvärden. Om inget Name värde anges kan objekten XmlElement eller XmlNode ha valfritt elementnamn.

När du anropar Deserialize -metoden för XmlSerializer klassen samlas alla element som inte har någon motsvarande medlem i objektet som deserialiseras i matrisen. Efter deserialisering itererar du genom samlingen av XmlElement objekt för att bearbeta data. Om du anger ett Name värde innehåller matrisen endast XML-element med det namnet. Om du inte anger något Name värde innehåller matrisen alla element som inte har någon motsvarande medlem i klassen. Om en klass innehåller fler än ett fält som attributet tillämpas på använder du Nameegenskaperna , eller Name och Namespace för att skilja mellan innehållet i matriserna. Om en sådan klass (med flera fält) också innehåller ett fält som inte har några olika egenskapsvärden inställda (med andra ord Name , och Namespace) under deserialiseringen, innehåller den här matrisen alla okända XML-element som inte redan finns i de andra matriserna. Om en klass innehåller mer än ett fält som inte har en differentierings Name- eller NameNamespace värdeuppsättning är beteendet under deserialiseringen ospecificerat.

Du kan också använda för XmlAnyElementAttribute ett fält som returnerar ett enda XmlElement objekt. Om du gör det måste du använda egenskaperna och metoderna för XmlElement klassen för att rekursivt iterera genom de okända elementen.

Du kan tillämpa flera instanser av på XmlAnyElementAttribute en klassmedlem, men varje instans måste ha ett distinkt Name egenskapsvärde. Om samma Name egenskap har angetts för varje instans måste ett distinkt Namespace egenskapsvärde anges för varje instans.

Händelserna UnknownNode och UnknownAttributeXmlSerializer inträffar inte om du tillämpar på XmlAnyElementAttribute en medlem i en klass.

Note

Du kan använda ordet XmlAnyElement i koden i stället för längre XmlAnyElementAttribute.

Mer information om hur du använder attribut finns i Attribut.

Konstruktorer

Name Description
XmlAnyElementAttribute()

Initierar en ny instans av XmlAnyElementAttribute klassen.

XmlAnyElementAttribute(String, String)

Initierar en ny instans av XmlAnyElementAttribute klassen och anger xml-elementnamnet som genereras i XML-dokumentet och dess XML-namnområde.

XmlAnyElementAttribute(String)

Initierar en ny instans av XmlAnyElementAttribute klassen och anger det XML-elementnamn som genereras i XML-dokumentet.

Egenskaper

Name Description
Name

Hämtar eller anger XML-elementnamnet.

Namespace

Hämtar eller anger XML-namnområdet som genereras i XML-dokumentet.

Order

Hämtar eller anger den explicita ordning i vilken elementen serialiseras eller deserialiseras.

TypeId

När den implementeras i en härledd klass hämtar du en unik identifierare för den här Attribute.

(Ärvd från Attribute)

Metoder

Name Description
Equals(Object)

Returnerar ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
GetHashCode()

Returnerar hash-koden för den här instansen.

(Ärvd från Attribute)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IsDefaultAttribute()

När den åsidosättas i en härledd klass anger du om värdet för den här instansen är standardvärdet för den härledda klassen.

(Ärvd från Attribute)
Match(Object)

När den åsidosätts i en härledd klass returneras ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

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

Mappar en uppsättning namn till en motsvarande uppsättning av sändningsidentifierare.

(Ärvd från Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hämtar typinformationen för ett objekt, som kan användas för att hämta typinformationen för ett gränssnitt.

(Ärvd från Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hämtar antalet typinformationsgränssnitt som ett objekt tillhandahåller (antingen 0 eller 1).

(Ärvd från Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Ger åtkomst till egenskaper och metoder som exponeras av ett objekt.

(Ärvd från Attribute)

Gäller för

Se även