XamlXmlWriter Classe

Definizione

Usa una classe di supporto TextWriter o XmlWriter per scrivere un flusso di nodi XAML in un modulo serializzato di testo o markup.

public ref class XamlXmlWriter : System::Xaml::XamlWriter
public class XamlXmlWriter : System.Xaml.XamlWriter
type XamlXmlWriter = class
    inherit XamlWriter
Public Class XamlXmlWriter
Inherits XamlWriter
Ereditarietà
XamlXmlWriter

Commenti

Questa classe viene in genere usata negli scenari di serializzazione.

Come usare XamlXmlWriter

L'API XamlWriter include diversi metodi che scrivono diversi tipi di nodi XAML. Collettivamente, questi metodi sono indicati nella documentazione come metodi Write di un XamlWriter. XamlXmlWriter usa diverse classi di stato interne per determinare cosa fare quando viene chiamata una delle relative implementazioni Write. Una chiamata Write usa gli stati per determinare se l'elemento, l'attributo o il valore richiesti possono essere scritti o se viene generata un'eccezione. Ad esempio, se si chiama WriteEndObject e lo stato della XamlXmlWriter posizione del nodo corrente si trova in un valore o all'interno di un membro, viene generata un'eccezione. In genere, i chiamanti dell'API XamlXmlWriter devono essere consapevoli del tipo del nodo XAML corrente proveniente dal lettore XAML e dal flusso del nodo XAML. In base a questa conoscenza, i chiamanti devono evitare di chiamare Write API non rilevanti per il tipo di nodo corrente.

Spazi dei nomi XAML e XamlXmlWriter

Il comportamento di scrittura dello spazio dei nomi XAML di XamlXmlWriter è complesso e non è limitato alle chiamate esplicite a WriteNamespace. Al contrario, altre chiamate Write, ad esempio WriteStartObject, potrebbero richiedere che la dichiarazione dello spazio dei nomi venga scritta in determinati punti della struttura del nodo. Il writer XAML genera un prefisso in base alla propria logica oppure usa le informazioni del servizio INamespacePrefixLookup per determinare un prefisso preferito. Inoltre, le chiamate esplicite WriteNamespace potrebbero rinviare o non restituire nulla se la dichiarazione dello spazio dei nomi XAML è già applicabile e dichiarata altrove.

Eccezioni del metodo write

Le eccezioni generate dai metodi di XamlXmlWriterWrite sono in genere InvalidOperationException o XamlXmlWriterException.

Un InvalidOperationException spesso indica che un lettore XAML ha passato una struttura di nodo non valida nel flusso del nodo XAML. In questo caso la struttura del nodo non è valida per motivi non correlati alla convalida di uno schema XAML o di un contesto dello schema XAML. Invece, il flusso del nodo non è valido nel formato di base. Ad esempio, se un'implementazione del lettore XAML difettosa ha generato un flusso di nodi XAML contenente due nodi StartObject consecutivi, il tentativo di chiamare il secondo WriteStartObject genererà un InvalidOperationException. Tutti i writer XAML considerano un'operazione di questo tipo non valida. Un altro esempio di un InvalidOperationException è quando le informazioni sullo spazio dei nomi XAML non sono disponibili tramite il contesto dello schema XAML applicabile alla posizione corrente del flusso del nodo.

Un XamlXmlWriterException indica un'eccezione in cui questa particolare implementazione del writer XAML sceglie di generare un'eccezione in base alla funzionalità prevista. Un XamlXmlWriterException può indicare casi specifici in cui un XamlXmlWriter viola il proprio stato o impostazioni. Ad esempio, un XamlXmlWriterException potrebbe derivare da tentativi di scrivere informazioni sullo spazio dei nomi XAML in una posizione che il XamlXmlWriter e il relativo formato di serializzazione non supportano o scrivere membri duplicati quando il XamlXmlWriterSettings vietarlo.

Costruttori

XamlXmlWriter(Stream, XamlSchemaContext)

Inizializza una nuova istanza della classe XamlXmlWriter da un flusso.

XamlXmlWriter(Stream, XamlSchemaContext, XamlXmlWriterSettings)

Inizializza una nuova istanza della classe XamlXmlWriter da un flusso utilizzando un oggetto impostazioni writer.

XamlXmlWriter(TextWriter, XamlSchemaContext)

Inizializza una nuova istanza della classe XamlXmlWriter da una base TextWriter.

XamlXmlWriter(TextWriter, XamlSchemaContext, XamlXmlWriterSettings)

Inizializza una nuova istanza della classe XamlXmlWriter da una base TextWriter utilizzando un oggetto settings.

XamlXmlWriter(XmlWriter, XamlSchemaContext)

Inizializza una nuova istanza della classe XamlXmlWriter da una base XmlWriter.

XamlXmlWriter(XmlWriter, XamlSchemaContext, XamlXmlWriterSettings)

Inizializza una nuova istanza della classe XamlXmlWriter da una base XmlWriter utilizzando un oggetto settings.

Proprietà

IsDisposed

Ottiene un valore che indica se è stato chiamato Dispose(Boolean).

(Ereditato da XamlWriter)
SchemaContext

Ottiene il contesto dello schema XAML utilizzato da questa XamlXmlWriter per l'elaborazione.

Settings

Ottiene le impostazioni del writer utilizzate da questa XamlXmlWriter per l'elaborazione XAML.

Metodi

Close()

Chiude l'oggetto writer XAML.

(Ereditato da XamlWriter)
Dispose(Boolean)

Rilascia le risorse non gestite usate da XamlXmlWriter e, facoltativamente, rilascia le risorse gestite.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Flush()

Chiama il metodo Flush del XmlWriter sottostante o TextWriter, che scrive qualsiasi elemento attualmente presente nel buffer e quindi chiude il writer.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
WriteEndMember()

Scrive un nodo membro finale XAML nel XmlWriter sottostante o TextWriter. Genera un'eccezione se la posizione corrente del flusso del nodo XAML non si trova all'interno di un membro o se lo stato del writer interno non supporta la scrittura in un membro finale.

WriteEndObject()

Scrive un nodo dell'oggetto finale XAML nel XmlWriter sottostante o TextWriter. Genera un'eccezione se la posizione corrente del flusso del nodo XAML in fase di elaborazione non è compatibile con la scrittura di un oggetto finale.

WriteGetObject()

Scrive un oggetto nei casi in cui l'oggetto specificato è un valore predefinito o implicito della proprietà che viene scritta, anziché essere specificato come valore dell'oggetto nel set di nodi XAML di input.

WriteNamespace(NamespaceDeclaration)

Scrive le informazioni sullo spazio dei nomi nell'XmlWriter sottostante o TextWriter. Può generare un'eccezione per determinati stati; Tuttavia, può invece rinviare la scrittura delle informazioni sullo spazio dei nomi fino a quando il writer e il flusso del nodo XAML che viene elaborato raggiunge una posizione in cui è possibile inserire una dichiarazione dello spazio dei nomi XAML.

WriteNode(XamlReader)

Esegue il cambio in base al tipo di nodo dal lettore XAML (NodeType) e chiama il metodo Write pertinente per l'implementazione del writer.

(Ereditato da XamlWriter)
WriteStartMember(XamlMember)

Scrive un nodo membro iniziale XAML nel XmlWriter sottostante o TextWriter. Genera un'eccezione se la posizione corrente del flusso del nodo XAML si trova all'interno di un altro membro o se non si trova in uno stato di ambito o writer in cui è possibile scrivere un membro iniziale.

WriteStartObject(XamlType)

Scrive un nodo dell'oggetto iniziale XAML nel XmlWriter sottostante o TextWriter. Genera un'eccezione se la posizione corrente del flusso di nodi XAML non si trova in un ambito in cui è possibile scrivere un oggetto iniziale o se il writer non è in uno stato in grado di scrivere un oggetto iniziale.

WriteValue(Object)

Scrive un nodo valore XAML nel XmlWriter sottostante o TextWriter. Genera un'eccezione se la posizione corrente del flusso del nodo XAML non è valida per la scrittura di un valore o il writer si trova in uno stato in cui non è possibile scrivere un valore.

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Vedere Dispose().

(Ereditato da XamlWriter)

Si applica a

Vedi anche