XmlAnyElementAttribute Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
- 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) |