XmlAnyElementAttribute Osztály

Definíció

Megadja, hogy a tag (egy tömböt vagy XmlElement objektumot visszaadó XmlNode mező) olyan objektumokat tartalmaz, amelyek olyan XML-elemet képviselnek, amelynek nincs megfelelő tagja a szerializált vagy deszerializált objektumban.

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
Öröklődés
XmlAnyElementAttribute
Attribútumok

Példák

Az alábbi példa egy XmlAnyElementAttribute olyan mezőre AllElements vonatkozik, amely egy objektumtömböt XmlElement ad vissza.

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

Megjegyzések

Tip

Ha olyan hordozható osztálytárban dolgozik, mint például a Silverlight, Windows Phone vagy Windows Store App projekt, és a .NET Framework 4.0.3-as vagy újabb verzióját használja, használja a XElement vagy XNodeXmlElement és XmlNode helyett.

XmlAnyElementAttribute A használatával tetszőleges adatokat (XML-elemeket) tartalmazhat, amelyeket egy XML-dokumentum részeként lehet elküldeni, például a dokumentum részeként küldött metaadatokat.

Alkalmazza a XmlAnyElementAttribute mezőt egy olyan mezőre, amely egy tömböt XmlElement vagy XmlNode objektumot ad vissza. Az ilyen mezők kétféleképpen használhatók attól függően, hogy egy objektum szerializálva vagy deszerializálva van-e. Szerializált állapotban az objektum XML-elemként vagy csomópontként jön létre, annak ellenére, hogy a szerializálandó objektumban nincs megfelelő tag (vagy tag). Ha tulajdonságértéket Name ad meg az attribútum alkalmazásakor, a tömbbe beszúrt összes XmlElement vagy XmlNode objektumnak ugyanazzal az elemnévvel és alapértelmezett névtérrel kell rendelkeznie, vagy kivétel lép fel. Ha beállítja a Namespace tulajdonság értékét, akkor a Name tulajdonságot is be kell állítania, és az XmlElement objektumoknak XmlNode is azonos névtér- és névtérértékekkel kell rendelkezniük. Ha nincs Name megadva érték, az objektumok vagy XmlElement az XmlNode objektumok bármilyen elemnévvel rendelkezhetnek.

Amikor meghívja az Deserialize osztály metódusát, a rendszer összegyűjti a XmlSerializer tömbben azokat az elemeket, amelyeknek nincs megfelelő tagjuk a deszerializálandó objektumban. A deszerializálás után iterálja át az elemek gyűjteményét XmlElement az adatok feldolgozásához. Ha értéket ad meg Name , a tömb csak az ilyen nevű XML-elemeket tartalmazza. Ha nem ad meg Name értéket, a tömb minden olyan elemet tartalmaz, amelynek nincs megfelelő tagja az osztályban. Ha egy osztály egynél több mezőt tartalmaz, amelyre az attribútumot alkalmazza, a tömbök tartalma közötti Name különbségtételhez használja az Name, vagy Namespace tulajdonságokat. Ha egy ilyen osztály (több mezővel) tartalmaz egy olyan mezőt is, NameNamespaceamely nem tartalmaz különbséget a deszerializálás során beállított tulajdonságértékekkel (más szóval) a tömbben, ez a tömb minden olyan ismeretlen XML-elemet tartalmaz, amely még nem szerepel a többi tömbben. Ha egy osztály egynél több olyan mezőt tartalmaz, amely nem tartalmaz különbséget vagy NameName értékhalmaztNamespace, a deszerializálás során a viselkedés nem határozható meg.

Alkalmazhatja a XmlAnyElementAttribute mezőt egy olyan mezőre is, amely egyetlen XmlElement objektumot ad vissza. Ha így tesz, az osztály tulajdonságaival és metódusaival XmlElement rekurzív módon kell átfutnia az ismeretlen elemeken.

Az osztálytagokra XmlAnyElementAttribute több példányt is alkalmazhat, de mindegyik példánynak külön Name tulajdonságértékekkel kell rendelkeznie. Vagy ha minden példányhoz ugyanazt Name a tulajdonságot állítja be, minden példányhoz külön Namespace tulajdonságértéket kell beállítani.

A UnknownNode program és UnknownAttribute az XmlSerializer események nem fordulnak elő, ha egy osztály egy tagjára alkalmazza a XmlAnyElementAttribute parancsot.

Note

A hosszabb helyett használhatja a szót XmlAnyElement a XmlAnyElementAttributekódban.

Az attribútumok használatáról további információt az Attribútumok című témakörben talál.

Konstruktorok

Name Description
XmlAnyElementAttribute()

Inicializálja a XmlAnyElementAttribute osztály új példányát.

XmlAnyElementAttribute(String, String)

Inicializálja az XmlAnyElementAttribute osztály új példányát, és megadja az XML-dokumentumban és annak XML-névterében létrehozott XML-elem nevét.

XmlAnyElementAttribute(String)

Inicializálja az XmlAnyElementAttribute osztály új példányát, és megadja az XML-dokumentumban létrehozott XML-elem nevét.

Tulajdonságok

Name Description
Name

Lekéri vagy beállítja az XML-elem nevét.

Namespace

Lekéri vagy beállítja az XML-dokumentumban létrehozott XML-névteret.

Order

Lekéri vagy beállítja az elemek szerializálásának vagy deszerializálásának explicit sorrendjét.

TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

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

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)

A következőre érvényes:

Lásd még