XmlAnyElementAttributes Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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ů:
Vytvořit .XmlAnyElementAttributes
Vytvořte sadu XmlAnyElementAttribute objektů a přidejte jednotlivé objekty do kolekce pomocí Add metody.
Vytvořit .XmlAttributes
XmlAnyElements Nastavte vlastnost na XmlAnyElementAttributeshodnotu .
Vytvořit .XmlAttributeOverrides
Přidejte do XmlAttributes metody metodu XmlAttributeOverrides Add .
Vytvořte instanci XmlSerializer pomocí příkazu XmlAttributeOverrides.
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. |