XmlAnyElementAttributes Třída

Definice

Představuje kolekci XmlAnyElementAttribute objektů.

public ref class XmlAnyElementAttributes : System::Collections::IList
public ref class XmlAnyElementAttributes : System::Collections::CollectionBase
public class XmlAnyElementAttributes : System.Collections.IList
public class XmlAnyElementAttributes : System.Collections.CollectionBase
type XmlAnyElementAttributes = class
    interface ICollection
    interface IEnumerable
    interface IList
type XmlAnyElementAttributes = class
    inherit CollectionBase
Public Class XmlAnyElementAttributes
Implements IList
Public Class XmlAnyElementAttributes
Inherits CollectionBase
Dědičnost
XmlAnyElementAttributes
Dědičnost
XmlAnyElementAttributes
Implementuje

Příklady

Následující příklad vytvoří novou XmlAnyElementAttribute a přidá ji do kolekce objektů, ke které se přistupuje XmlAnyElements prostřednictvím vlastnosti. Potom XmlAttributes se přidá do objektu XmlAttributeOverrides , který se použije k vytvoření XmlSerializer. Slouží XmlSerializer k serializaci nebo deserializaci objektu. Pokud chcete zobrazit účinek použití XmlAnyElementAttributes vlastnosti, vytvořte dokument XML s názvem UnknownElements.xml spuštěním SerializeObject metody v Main metodě. Upravte výsledný dokument tak, aby obsahoval další (neznámé) prvky. Zakomentujte SerializeObject volání v Main metodě a odkomentujte volání metody DeserializeObject , která vytiskne název a hodnotu libovolného neznámého elementu XML.

#using <System.dll>
#using <System.xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
using namespace System::Xml;
public ref class Group
{
public:
   String^ GroupName;

   [XmlAnyElement]
   array<Object^>^Things;
};

void SerializeObject( String^ filename );
void DeserializeObject( String^ filename );
XmlSerializer^ CreateOverrideSerializer();
int main()
{
   // 1 Run this and create the XML document.
   // 2 Add new elements to the XML document.
   // 3 Comment out the next line, and uncomment
   // the DeserializeObject line to deserialize the
   // XML document and see unknown elements.
   SerializeObject( "UnknownElements.xml" );

   // DeserializeObject(S"UnknownElements.xml");
}

void SerializeObject( String^ filename )
{
   XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid );
   TextWriter^ writer = gcnew StreamWriter( filename );
   Group^ g = gcnew Group;
   g->GroupName = "MyGroup";
   ser->Serialize( writer, g );
   writer->Close();
}

void DeserializeObject( String^ filename )
{
   XmlSerializer^ ser = CreateOverrideSerializer();

   // 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();
   Console::WriteLine( g->GroupName );
   Console::WriteLine( g->Things->Length );
   for ( int i = 0; i < g->Things->Length; ++i )
   {
      XmlElement^ xelement = safe_cast<XmlElement^>(g->Things[ i ]);
      Console::WriteLine( "{0}: {1}", xelement->Name, xelement->InnerXml );
   }
}

XmlSerializer^ CreateOverrideSerializer()
{
   XmlAnyElementAttribute^ myAnyElement = gcnew XmlAnyElementAttribute;
   XmlAttributeOverrides^ xOverride = gcnew XmlAttributeOverrides;
   XmlAttributes^ xAtts = gcnew XmlAttributes;
   xAtts->XmlAnyElements->Add( myAnyElement );
   xOverride->Add( Group::typeid, "Things", xAtts );
   return gcnew XmlSerializer( Group::typeid,xOverride );
}
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;

public class Group{
   public string GroupName;
   [XmlAnyElement]
   public object[]Things;
}

public class Test{
   static void Main(){
      Test t = new Test();
      // 1 Run this and create the XML document.
      // 2 Add new elements to the XML document.
      // 3 Comment out the new line, and uncomment
      // the DeserializeObject line to deserialize the
      // XML document and see unknown elements.
      t.SerializeObject("UnknownElements.xml");
     
      // t.DeserializeObject("UnknownElements.xml");
   }

   private void SerializeObject(string filename){
      XmlSerializer ser = new XmlSerializer(typeof (Group));
      TextWriter writer = new StreamWriter(filename);
      Group g = new Group();
      g.GroupName = "MyGroup";
      ser.Serialize(writer, g);
      writer.Close();
   }

   private void DeserializeObject(string filename){

      XmlSerializer ser = CreateOverrideSerializer();
      // A FileStream is needed to read the XML document.
      FileStream fs = new FileStream(filename, FileMode.Open);
     Group g = (Group)
        ser.Deserialize(fs);
     fs.Close();
     Console.WriteLine(g.GroupName);
     Console.WriteLine(g.Things.Length);
     foreach(XmlElement xelement in g.Things){
     Console.WriteLine(xelement.Name + ": " + xelement.InnerXml);
     }
   }

   private XmlSerializer CreateOverrideSerializer(){
      XmlAnyElementAttribute myAnyElement = 
      new XmlAnyElementAttribute();
      XmlAttributeOverrides xOverride = 
      new XmlAttributeOverrides();
      XmlAttributes xAtts = new XmlAttributes();
      xAtts.XmlAnyElements.Add(myAnyElement);
      xOverride.Add(typeof(Group), "Things", xAtts);
      return new XmlSerializer(typeof(Group) , xOverride);
   }
}
Imports System.IO
Imports System.Xml.Serialization
Imports System.Xml

Public Class Group
   Public GroupName As String 
   <XmlAnyElement> _
   Public Things () As object
End Class

Public Class Test
   Shared Sub Main()
      Dim t As Test = New Test()
      ' 1 Run this and create the XML document.
      ' 2 Add New elements to the XML document.
      ' 3 Comment out the New line, and uncomment
      ' the DeserializeObject line to deserialize the
      ' XML document and see unknown elements.
     t.SerializeObject("UnknownElements.xml")
     
      't.DeserializeObject("UnknownElements.xml")
   End Sub

   Private Sub SerializeObject(filename As String)
      Dim ser As XmlSerializer = New XmlSerializer(GetType (Group))
      Dim writer As TextWriter = New StreamWriter(filename)
      
      Dim g As Group = New Group()
      g.GroupName = "MyGroup"
      ser.Serialize(writer, g)
      writer.Close()
   End Sub

   
   Private Sub DeserializeObject(filename As String)

      Dim ser As XmlSerializer = CreateOverrideSerializer()
      ' 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()
     Console.WriteLine(g.GroupName)
     Console.WriteLine(g.Things.Length)
     Dim xelement As XmlELement
     for each xelement in g.Things
        Console.WriteLine(xelement.Name &": " & xelement.InnerXml)
     next
   End Sub
   

   Private Function CreateOverrideSerializer() As XmlSerializer 
      Dim myAnyElement As XmlAnyElementAttribute = _
      New XmlAnyElementAttribute()
      Dim xOverride As XmlAttributeOverrides = _
      New XmlAttributeOverrides()
      Dim xAtts As XmlAttributes = New XmlAttributes()
      xAtts.XmlAnyElements.Add(myAnyElement)
      xOverride.Add(GetType(Group), "Things", xAtts)
      return New XmlSerializer(GetType(Group) , xOverride)
   End Function
End Class

Poznámky

XmlAnyElementAttributes Slouží k přepsání chování sady XmlAnyElementAttribute objektů. U člena třídy lze použít více instancí XmlAnyElementAttribute třídy, pokud má každá instance jedinečnou Name hodnotu vlastnosti. To dává pokyn, XmlSerializer aby shromažďoval neznámé prvky pod pojmenovaným prvkem do příslušného pole. Je to proto, že do třídy lze přidat XmlAnyElementAttributesvíce instancí XmlAnyElementAttribute třídy .

Přepsání sady XmlAnyElementAttribute objektů:

  1. Vytvořit .XmlAnyElementAttributes

  2. Vytvořte sadu XmlAnyElementAttribute objektů a přidejte jednotlivé objekty do kolekce pomocí Add metody.

  3. Vytvořit .XmlAttributes

  4. XmlAnyElements Nastavte vlastnost na XmlAnyElementAttributeshodnotu .

  5. Vytvořit .XmlAttributeOverrides

  6. Přidejte do XmlAttributes metody metodu XmlAttributeOverrides Add .

  7. Vytvořte instanci XmlSerializer pomocí příkazu XmlAttributeOverrides.

  8. Serializovat nebo deserializovat objekt, který obsahuje sadu XmlAnyElementAttribute objektů.

Konstruktory

XmlAnyElementAttributes()

Inicializuje novou instanci XmlAnyElementAttributes třídy.

Vlastnosti

Capacity

Získá nebo nastaví počet prvků, které CollectionBase může obsahovat.

(Zděděno od CollectionBase)
Count

Získá počet elementů obsažených v objektu ICollection.

Count

Získá počet prvků obsažených v CollectionBase instanci. Tuto vlastnost nelze přepsat.

(Zděděno od CollectionBase)
InnerList

ArrayList Získá obsahující seznam prvků v CollectionBase instanci.

(Zděděno od CollectionBase)
Item[Int32]

Získá nebo nastaví v zadaném indexu XmlAnyElementAttribute .

List

IList Získá obsahující seznam prvků v CollectionBase instanci.

(Zděděno od CollectionBase)

Metody

Add(XmlAnyElementAttribute)

Přidá do kolekce.XmlAnyElementAttribute

Clear()

Odebere všechny položky z objektu IList.

Clear()

Odebere všechny objekty z CollectionBase instance. Tuto metodu nelze přepsat.

(Zděděno od CollectionBase)
Contains(XmlAnyElementAttribute)

Získá hodnotu, která označuje, zda zadaný XmlAnyElementAttribute existuje v kolekci.

CopyTo(XmlAnyElementAttribute[], Int32)

Zkopíruje celou kolekci do kompatibilního jednorozměrného pole XmlElementAttribute objektů počínaje zadaným indexem cílového pole.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetEnumerator()

Vrací enumerátor procházející kolekci.

GetEnumerator()

Vrátí výčet, který iteruje prostřednictvím CollectionBase instance.

(Zděděno od CollectionBase)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
IndexOf(XmlAnyElementAttribute)

Získá index zadaného XmlAnyElementAttribute.

Insert(Int32, XmlAnyElementAttribute)

Vloží do XmlAnyElementAttribute kolekce v zadaném indexu.

MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
OnClear()

Provádí další vlastní procesy při vymazání obsahu CollectionBase instance.

(Zděděno od CollectionBase)
OnClearComplete()

Provede další vlastní procesy po vymazání obsahu CollectionBase instance.

(Zděděno od CollectionBase)
OnInsert(Int32, Object)

Před vložením nového prvku do CollectionBase instance provede další vlastní procesy.

(Zděděno od CollectionBase)
OnInsertComplete(Int32, Object)

Provede další vlastní procesy po vložení nového prvku do CollectionBase instance.

(Zděděno od CollectionBase)
OnRemove(Int32, Object)

Provádí další vlastní procesy při odebírání elementu CollectionBase z instance.

(Zděděno od CollectionBase)
OnRemoveComplete(Int32, Object)

Provede další vlastní procesy po odebrání elementu CollectionBase z instance.

(Zděděno od CollectionBase)
OnSet(Int32, Object, Object)

Provede další vlastní procesy před nastavením hodnoty v CollectionBase instanci.

(Zděděno od CollectionBase)
OnSetComplete(Int32, Object, Object)

Provede další vlastní procesy po nastavení hodnoty v CollectionBase instanci.

(Zděděno od CollectionBase)
OnValidate(Object)

Provádí další vlastní procesy při ověřování hodnoty.

(Zděděno od CollectionBase)
Remove(XmlAnyElementAttribute)

Odebere zadanou XmlAnyElementAttribute z kolekce.

RemoveAt(Int32)

Odebere IList položku v zadaném indexu.

RemoveAt(Int32)

Odebere prvek v zadaném indexu CollectionBase instance. Tato metoda není přepsána.

(Zděděno od CollectionBase)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

ICollection.CopyTo(Array, Int32)

Zkopíruje prvky ICollection pole počínaje konkrétním indexem.

ICollection.CopyTo(Array, Int32)

Zkopíruje celý CollectionBase objekt do kompatibilního jednorozměrného Array, počínaje zadaným indexem cílového pole.

(Zděděno od CollectionBase)
ICollection.IsSynchronized

Získá hodnotu označující, zda je přístup k této ICollection synchronizaci (bezpečné vlákno).

ICollection.IsSynchronized

Získá hodnotu označující, zda je přístup k ho CollectionBase synchronizován (bezpečné vlákno).

(Zděděno od CollectionBase)
ICollection.SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k .ICollection

ICollection.SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k CollectionBase.

(Zděděno od CollectionBase)
IList.Add(Object)

Přidá položku do objektu IList.

IList.Add(Object)

Přidá objekt na konec objektu CollectionBase.

(Zděděno od CollectionBase)
IList.Contains(Object)

Určuje, zda IList obsahuje konkrétní hodnotu.

IList.Contains(Object)

Určuje, zda CollectionBase obsahuje konkrétní prvek.

(Zděděno od CollectionBase)
IList.IndexOf(Object)

Určuje index konkrétní položky v sadě IList.

IList.IndexOf(Object)

Vyhledá zadaný Object index a vrátí nulový index prvního výskytu v rámci celého CollectionBasesouboru .

(Zděděno od CollectionBase)
IList.Insert(Int32, Object)

Vloží položku do zadaného indexu IList .

IList.Insert(Int32, Object)

Vloží prvek do zadaného indexu CollectionBase .

(Zděděno od CollectionBase)
IList.IsFixedSize

Získá hodnotu určující, zda IList má pevnou velikost.

IList.IsFixedSize

Získá hodnotu určující, zda CollectionBase má pevnou velikost.

(Zděděno od CollectionBase)
IList.IsReadOnly

Získá hodnotu, která určuje, zda je IList určena jen pro čtení.

IList.IsReadOnly

Získá hodnotu, která určuje, zda je CollectionBase určena jen pro čtení.

(Zděděno od CollectionBase)
IList.Item[Int32]

Získá nebo nastaví prvek u zadaného indexu.

IList.Item[Int32]

Získá nebo nastaví prvek u zadaného indexu.

(Zděděno od CollectionBase)
IList.Remove(Object)

Odebere první výskyt konkrétního objektu z objektu IList.

IList.Remove(Object)

Odebere první výskyt konkrétního objektu z objektu CollectionBase.

(Zděděno od CollectionBase)

Metody rozšíření

Cast<TResult>(IEnumerable)

Přetypuje prvky zadaného IEnumerable typu.

OfType<TResult>(IEnumerable)

Filtruje prvky IEnumerable založené na zadaném typu.

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede na IEnumerable IQueryable.

Platí pro