XmlAnyElementAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica che il membro (un campo che restituisce una matrice di oggetti XmlElement o XmlNode) contiene oggetti che rappresentano qualsiasi elemento XML che non dispone di alcun membro corrispondente nell'oggetto da serializzare o deserializzare.
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
- Ereditarietà
- Attributi
Esempio
Nell'esempio seguente viene applicato a XmlAnyElementAttribute un campo denominato AllElements che restituisce una matrice di XmlElement oggetti .
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
Commenti
Suggerimento
Quando si lavora in una libreria di classi portabile, ad esempio in Silverlight, in Windows Phone o in un progetto di app di Windows Store e si usa .NET Framework 4.0.3 e versioni successive, usare XElement o XNode al posto di XmlElement e XmlNode.
Utilizzare per XmlAnyElementAttribute contenere dati arbitrari (come elementi XML) che possono essere inviati come parte di un documento XML, ad esempio metadati inviati come parte del documento.
Applicare a XmlAnyElementAttribute un campo che restituisce una matrice di XmlElement oggetti o XmlNode . Tale campo può essere utilizzato in due modi, a seconda che un oggetto venga serializzato o deserializzato. Quando viene serializzato, l'oggetto viene generato come elementi o nodi XML, anche se non dispone di membri o membri corrispondenti nell'oggetto da serializzare. Se si specifica un Name valore della proprietà quando si applica l'attributo, tutti gli XmlElement oggetti o XmlNode inseriti nella matrice devono avere lo stesso nome dell'elemento e lo spazio dei nomi predefinito oppure viene generata un'eccezione. Se si imposta il valore della Namespace proprietà, è necessario impostare anche la Name proprietà e gli XmlElement oggetti o XmlNode devono avere anche lo stesso nome e gli stessi valori dello spazio dei nomi. Se non viene specificato alcun Name valore, gli XmlElement oggetti o XmlNode possono avere qualsiasi nome di elemento.
Quando si chiama il Deserialize metodo della XmlSerializer classe , tutti gli elementi che non dispongono di un membro corrispondente nell'oggetto da deserializzare vengono raccolti nella matrice. Dopo la deserializzazione, scorrere la raccolta di XmlElement elementi per elaborare i dati. Se si specifica un Name valore, la matrice contiene solo elementi XML con tale nome. Se non si specifica un Name valore, la matrice contiene tutti gli elementi che non dispongono di alcun membro corrispondente nella classe . Se una classe contiene più campi a cui viene applicato l'attributo, utilizzare le Nameproprietà o e NameNamespace per distinguere il contenuto delle matrici. Se tale classe (con più campi) contiene anche un campo che non dispone di valori di proprietà diversi impostati (in altre parole Name e Namespace) durante la deserializzazione, questa matrice contiene tutti gli elementi XML sconosciuti che non sono già contenuti nelle altre matrici. Se una classe contiene più di un campo che non dispone di un valore diverso Nameda , o Name e Namespace impostato, il comportamento durante la deserializzazione non è specificato.
È anche possibile applicare l'oggetto XmlAnyElementAttribute a un campo che restituisce un singolo XmlElement oggetto. In questo caso, è necessario usare le proprietà e i metodi della XmlElement classe per scorrere in modo ricorsivo gli elementi sconosciuti.
È possibile applicare più istanze di a un membro della XmlAnyElementAttribute classe, ma ogni istanza deve avere un valore di proprietà distinto Name . In alternativa, se la stessa Name proprietà è impostata per ogni istanza, è necessario impostare un valore di proprietà distinto Namespace per ogni istanza.
Gli UnknownNode eventi e UnknownAttribute di XmlSerializer non si verificano se si applica a XmlAnyElementAttribute un membro di una classe.
Annotazioni
È possibile usare la parola XmlAnyElement nel codice anziché quella più lunga XmlAnyElementAttribute.
Per altre informazioni sull'uso degli attributi, vedere Attributi.
Costruttori
| Nome | Descrizione |
|---|---|
| XmlAnyElementAttribute() |
Inizializza una nuova istanza della classe XmlAnyElementAttribute. |
| XmlAnyElementAttribute(String, String) |
Inizializza una nuova istanza della XmlAnyElementAttribute classe e specifica il nome dell'elemento XML generato nel documento XML e nel relativo spazio dei nomi XML. |
| XmlAnyElementAttribute(String) |
Inizializza una nuova istanza della XmlAnyElementAttribute classe e specifica il nome dell'elemento XML generato nel documento XML. |
Proprietà
| Nome | Descrizione |
|---|---|
| Name |
Ottiene o imposta il nome dell'elemento XML. |
| Namespace |
Ottiene o imposta lo spazio dei nomi XML generato nel documento XML. |
| Order |
Ottiene o imposta l'ordine esplicito in cui gli elementi vengono serializzati o deserializzati. |
| TypeId |
Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute. (Ereditato da Attribute) |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
| GetHashCode() |
Restituisce il codice hash per questa istanza. (Ereditato da Attribute) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IsDefaultAttribute() |
Quando sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute) |
| Match(Object) |
Quando sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera le informazioni sul tipo per un oggetto, che può essere utilizzato per ottenere le informazioni sul tipo per un'interfaccia. (Ereditato da Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1). (Ereditato da Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornisce l'accesso alle proprietà e ai metodi esposti da un oggetto . (Ereditato da Attribute) |