Classe XmlTextWriter (System.Xml)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Classe XmlTextWriter
Il presente articolo è stato tradotto manualmente. Per visualizzare questa pagina e contemporaneamente visualizzarne il contenuto in lingua inglese, passare alla visualizzazione semplificata.

Rappresenta un writer che fornisce un modo veloce, non in cache e di tipo forward-only di generare flussi o file che contengono dati XML conformi alle raccomandazioni W3C Extensible Markup Language (XML) 1.0 e Namespaces in XML.

Gerarchia di ereditarietà

System.Object
  System.Xml.XmlWriter
    System.Xml.XmlTextWriter

Spazio dei nomi:  System.Xml
Assembly:  System.Xml (in System.Xml.dll)
Sintassi

Visual Basic
Public Class XmlTextWriter _
	Inherits XmlWriter
C#
public class XmlTextWriter : XmlWriter
Visual C++
public ref class XmlTextWriter : public XmlWriter
F#
type XmlTextWriter =  
    class
        inherit XmlWriter
    end

Il tipo XmlTextWriter espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo pubblico Supportato da XNA Framework XmlTextWriter(TextWriter) Crea un'istanza della classe XmlTextWriter utilizzando l'oggetto TextWriter specificato.
Metodo pubblico Supportato da XNA Framework XmlTextWriter(Stream, Encoding) Crea un'istanza della classe XmlTextWriter utilizzando la codifica e il flusso specificati.
Metodo pubblico Supportato da XNA Framework XmlTextWriter(String, Encoding) Crea un'istanza della classe XmlTextWriter utilizzando il file specificato.
In alto
Proprietà

  Nome Descrizione
Proprietà pubblica Supportato da XNA Framework BaseStream Ottiene l'oggetto flusso sottostante.
Proprietà pubblica Supportato da XNA Framework Formatting Indica come viene formattato l'output.
Proprietà pubblica Supportato da XNA Framework Indentation Ottiene o imposta il numero di oggetti IndentChars da scrivere per ciascun livello nella gerarchia quando la proprietà Formatting è impostata su Formatting.Indented.
Proprietà pubblica Supportato da XNA Framework IndentChar Ottiene o imposta il carattere da utilizzare per il rientro quando la proprietà Formatting è impostata su Formatting.Indented.
Proprietà pubblica Supportato da XNA Framework Namespaces Ottiene o imposta un valore che indica se supportare lo spazio dei nomi.
Proprietà pubblica Supportato da XNA Framework QuoteChar Ottiene o imposta il carattere da utilizzare per racchiudere tra virgolette i valori degli attributi.
Proprietà pubblica Supportato da XNA Framework Settings Ottiene l'oggetto XmlWriterSettings utilizzato per creare questa istanza di XmlWriter. (Ereditato da XmlWriter)
Proprietà pubblica Supportato da XNA Framework WriteState Ottiene lo stato del writer. (Esegue l'override di XmlWriter.WriteState).
Proprietà pubblica Supportato da XNA Framework XmlLang Ottiene l'ambito xml:lang corrente. (Esegue l'override di XmlWriter.XmlLang).
Proprietà pubblica Supportato da XNA Framework XmlSpace Ottiene un oggetto XmlSpace che rappresenta l'ambito xml:space corrente. (Esegue l'override di XmlWriter.XmlSpace).
In alto
Metodi

  Nome Descrizione
Metodo pubblico Supportato da XNA Framework Close Chiude questo flusso e quello sottostante. (Esegue l'override di XmlWriter.Close()).
Metodo protetto Supportato da XNA Framework Dispose(Boolean) Rilascia le risorse non gestite utilizzate dall'oggetto XmlWriter ed eventualmente rilascia le risorse gestite. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework Equals(Object) Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object)
Metodo protetto Supportato da XNA Framework Finalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework Flush Svuota il buffer scaricandone il contenuto nei flussi sottostanti, quindi svuota il flusso sottostante. (Esegue l'override di XmlWriter.Flush()).
Metodo pubblico Supportato da XNA Framework GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework LookupPrefix Restituisce il prefisso più vicino definito nell'ambito dello spazio dei nomi corrente per l'URI dello spazio dei nomi. (Esegue l'override di XmlWriter.LookupPrefix(String)).
Metodo protetto Supportato da XNA Framework MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework WriteAttributes Quando sottoposto a override in una classe derivata, scrive tutti gli attributi individuati in corrispondenza della posizione corrente nell'oggetto XmlReader. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteAttributeString(String, String) Quando sottoposto a override in una classe derivata, scrive l'attributo con il nome locale e il valore specificati. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteAttributeString(String, String, String) Quando sottoposto a override in una classe derivata, scrive un attributo con il nome locale, l'URI dello spazio dei nomi e il valore specificati. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteAttributeString(String, String, String, String) Quando sottoposto a override in una classe derivata, scrive l'attributo con il prefisso, il nome locale, l'URI dello spazio dei nomi e il valore specificati. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteBase64 Codifica i byte binari specificati come valori Base64 e scrive il testo risultante. (Esegue l'override di XmlWriter.WriteBase64(Byte[], Int32, Int32)).
Metodo pubblico Supportato da XNA Framework WriteBinHex Codifica i byte binari specificati come valori BinHex e scrive il testo risultante. (Esegue l'override di XmlWriter.WriteBinHex(Byte[], Int32, Int32)).
Metodo pubblico Supportato da XNA Framework WriteCData Scrive un blocco <![CDATA[...]]> contenente il testo specificato. (Esegue l'override di XmlWriter.WriteCData(String)).
Metodo pubblico Supportato da XNA Framework WriteCharEntity Forza la generazione di un'entità di caratteri per il valore del carattere Unicode specificato. (Esegue l'override di XmlWriter.WriteCharEntity(Char)).
Metodo pubblico Supportato da XNA Framework WriteChars Il testo viene scritto in un buffer alla volta. (Esegue l'override di XmlWriter.WriteChars(Char[], Int32, Int32)).
Metodo pubblico Supportato da XNA Framework WriteComment Scrive un commento <!--...--> contenente il testo specificato. (Esegue l'override di XmlWriter.WriteComment(String)).
Metodo pubblico Supportato da XNA Framework WriteDocType Scrive la dichiarazione DOCTYPE con il nome e gli attributi opzionali specificati. (Esegue l'override di XmlWriter.WriteDocType(String, String, String, String)).
Metodo pubblico Supportato da XNA Framework WriteElementString(String, String) Scrive un elemento con il nome locale e il valore specificati. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteElementString(String, String, String) Scrive un elemento con il nome locale, l'URI dello spazio dei nomi e il valore specificati. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteElementString(String, String, String, String) Scrive un elemento con il nome locale, l'URI dello spazio dei nomi e il valore specificati. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteEndAttribute Chiude la chiamata al metodo WriteStartAttribute precedente. (Esegue l'override di XmlWriter.WriteEndAttribute()).
Metodo pubblico Supportato da XNA Framework WriteEndDocument Chiude qualsiasi elemento o attributo aperto e riporta il writer allo stato di avvio. (Esegue l'override di XmlWriter.WriteEndDocument()).
Metodo pubblico Supportato da XNA Framework WriteEndElement Chiude un elemento e visualizza l'ambito dello spazio dei nomi corrispondente. (Esegue l'override di XmlWriter.WriteEndElement()).
Metodo pubblico Supportato da XNA Framework WriteEntityRef Scrive un riferimento a entità con formato &name;. (Esegue l'override di XmlWriter.WriteEntityRef(String)).
Metodo pubblico Supportato da XNA Framework WriteFullEndElement Chiude un elemento e visualizza l'ambito dello spazio dei nomi corrispondente. (Esegue l'override di XmlWriter.WriteFullEndElement()).
Metodo pubblico Supportato da XNA Framework WriteName Inserisce il nome specificato, verificando che si tratti di un nome valido in base alla raccomandazione W3C XML 1.0, disponibile all'indirizzo http://www.w3.org/TR/1998/REC-xml-19980210#NT-Name. (Esegue l'override di XmlWriter.WriteName(String)).
Metodo pubblico Supportato da XNA Framework WriteNmToken Inserisce il nome specificato, verificando che si tratti di un oggetto NmToken valido in base alla raccomandazione W3C XML 1.0, disponibile all'indirizzo http://www.w3.org/TR/1998/REC-xml-19980210#NT-Name. (Esegue l'override di XmlWriter.WriteNmToken(String)).
Metodo pubblico Supportato da XNA Framework WriteNode(XmlReader, Boolean) Quando sottoposto a override in una classe derivata, copia tutto il contenuto dal visualizzatore al writer e sposta il visualizzatore in corrispondenza del successivo elemento di pari livello. (Ereditato da XmlWriter)
Metodo pubblico WriteNode(XPathNavigator, Boolean) Copia tutti gli elementi dall'oggetto XPathNavigator nel writer. La posizione di XPathNavigator resta invariata. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteProcessingInstruction Scrive un'istruzione di elaborazione con uno spazio tra il nome e il testo, nel seguente modo: <? name text?>. (Esegue l'override di XmlWriter.WriteProcessingInstruction(String, String)).
Metodo pubblico Supportato da XNA Framework WriteQualifiedName Scrive il nome completo dello spazio dei nomi. Questo metodo esegue la ricerca del prefisso incluso nell'ambito dello spazio dei nomi specificato. (Esegue l'override di XmlWriter.WriteQualifiedName(String, String)).
Metodo pubblico Supportato da XNA Framework WriteRaw(String) Scrive manualmente markup non elaborato in base a una stringa. (Esegue l'override di XmlWriter.WriteRaw(String)).
Metodo pubblico Supportato da XNA Framework WriteRaw(Char[], Int32, Int32) Scrive manualmente markup non elaborato in base a un buffer di caratteri. (Esegue l'override di XmlWriter.WriteRaw(Char[], Int32, Int32)).
Metodo pubblico Supportato da XNA Framework WriteStartAttribute(String) Scrive l'inizio di un attributo con il nome locale specificato. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteStartAttribute(String, String) Scrive l'inizio di un attributo con il nome locale e l'URI dello spazio dei nomi specificati. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteStartAttribute(String, String, String) Scrive l'inizio di un attributo. (Esegue l'override di XmlWriter.WriteStartAttribute(String, String, String)).
Metodo pubblico Supportato da XNA Framework WriteStartDocument() Scrive la dichiarazione XML con la versione "1.0". (Esegue l'override di XmlWriter.WriteStartDocument()).
Metodo pubblico Supportato da XNA Framework WriteStartDocument(Boolean) Scrive la dichiarazione XML con la versione "1.0" e l'attributo standalone. (Esegue l'override di XmlWriter.WriteStartDocument(Boolean)).
Metodo pubblico Supportato da XNA Framework WriteStartElement(String) Quando sottoposto a override in una classe derivata, scrive un tag iniziale con il nome locale specificato. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteStartElement(String, String) Quando sottoposto a override in una classe derivata, scrive il tag iniziale specificato e lo associa allo spazio dei nomi indicato. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteStartElement(String, String, String) Scrive il tag di inizio specificato e lo associa allo spazio dei nomi e al prefisso indicati. (Esegue l'override di XmlWriter.WriteStartElement(String, String, String)).
Metodo pubblico Supportato da XNA Framework WriteString Scrive il contenuto del testo specificato. (Esegue l'override di XmlWriter.WriteString(String)).
Metodo pubblico Supportato da XNA Framework WriteSurrogateCharEntity Genera e scrive l'entità di caratteri surrogati per la coppia di caratteri surrogati. (Esegue l'override di XmlWriter.WriteSurrogateCharEntity(Char, Char)).
Metodo pubblico Supportato da XNA Framework WriteValue(Boolean) Scrive un valore Boolean. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteValue(DateTime) Scrive un valore DateTime. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteValue(Decimal) Scrive un valore Decimal. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteValue(Double) Scrive un valore Double. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteValue(Int32) Scrive un valore Int32. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteValue(Int64) Scrive un valore Int64. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteValue(Object) Scrive il valore dell'oggetto. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteValue(Single) Scrive un numero in virgola mobile e precisione singola. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteValue(String) Scrive un valore String. (Ereditato da XmlWriter)
Metodo pubblico Supportato da XNA Framework WriteWhitespace Scrive lo spazio vuoto specificato. (Esegue l'override di XmlWriter.WriteWhitespace(String)).
In alto
Implementazioni esplicite dell'interfaccia

  Nome Descrizione
Implementazione esplicita dell'interfaccia Metodo privato Supportato da XNA Framework IDisposable.Dispose Per una descrizione di questo membro, vedere IDisposable.Dispose. (Ereditato da XmlWriter)
In alto
Note

Questa classe implementa la classe XmlWriter.

Nota Nota

Nella versione .NET Framework versione 2.0 è consigliabile creare istanze di XmlWriter utilizzando il metodo XmlWriter.Create e la classe XmlWriterSettings. In questo modo è possibile sfruttare completamente tutte le nuove funzionalità introdotte in questa versione. Per ulteriori informazioni, vedere Creazione di writer XML.

La classe XmlTextWriter mantiene uno stack dello spazio dei nomi corrispondente a tutti gli spazi dei nomi definiti nello stack di elementi corrente. È possibile utilizzare XmlTextWriter per dichiarare manualmente gli spazi dei nomi.

 w.WriteStartElement("root");
 w.WriteAttributeString("xmlns", "x", null, "urn:1");
  w.WriteStartElement("item","urn:1");
  w.WriteEndElement();
  w.WriteStartElement("item","urn:1");
  w.WriteEndElement();
 w.WriteEndElement();

Il codice C# precedente produce il seguente output. XmlTextWriter promuove la dichiarazione dello spazio dei nomi nell'elemento di primo livello, al fine di evitarne la duplicazione nei due elementi figlio. il cui prefisso viene ripreso dalla dichiarazione dello spazio dei nomi.

 <root xmlns:x="urn:1">
  <x:item/>
  <x:item/>
 </x:root>

La classe XmlTextWriter consente inoltre di eseguire l'override della dichiarazione dello spazio dei nomi corrente. Nell'esempio seguente l'URI dello spazio dei nomi "123" viene sottoposto a override mediante l'elemento "abc", al fine di produrre l'elemento XML <x:node xmlns:x="abc"/>.

 w.WriteStartElement("x","node","123");
 w.WriteAttributeString("xmlns","x",null,"abc");

Utilizzando i metodi di scrittura che accettano un prefisso come argomento, è inoltre possibile specificare il prefisso da utilizzare. Nell'esempio seguente due diversi prefissi vengono associati allo stesso URI di spazio dei nomi per produrre il testo XML <x:root xmlns:x="urn:1"><y:item xmlns:y="urn:1"/></x:root>.

 XmlTextWriter w = new XmlTextWriter(Console.Out);
 w.WriteStartElement("x","root","urn:1");
  w.WriteStartElement("y","item","urn:1");
  w.WriteEndElement();
 w.WriteEndElement();
 w.Close();

Se più dichiarazioni dello spazio dei nomi eseguono il mapping di diversi prefissi allo stesso URI dello spazio dei nomi, la classe XmlTextWriter esamina lo stack delle dichiarazioni dello spazio dei nomi precedenti e seleziona il più vicino.

 XmlTextWriter w = new XmlTextWriter(Console.Out);
 w.Formatting = Formatting.Indented;
 w.WriteStartElement("x","root","urn:1");
 w.WriteStartElement("y","item","urn:1");
 w.WriteAttributeString("attr","urn:1","123");
 w.WriteEndElement();
 w.WriteEndElement();
 w.Close();

Nell'esempio del codice C# precedente la chiamata a WriteAttributeString non specifica alcun prefisso; il writer utilizza pertanto l'ultimo prefisso inserito nello stack dello spazio dei nomi e produce il seguente testo XML:

 <x:root xmlns:x="urn:1">
  <y:item y:attr="123" xmlns:y="urn:1" />
 </x:root>

Gli eventuali conflitti tra gli spazi dei nomi vengono risolti dalla classe XmlTextWriter tramite la generazione di prefissi alternativi. Se ad esempio un attributo e un elemento presentano lo stesso prefisso, ma spazi dei nomi differenti, la classe XmlWriter genererà un prefisso alternativo per l'attributo. I prefissi generati sono denominati n{i} dove i è un numero che inizia da 1. Il numero viene reimpostato a 1 per ogni elemento.

È necessario che gli attributi associati a un URI dello spazio dei nomi presentino un prefisso. Gli spazi dei nomi predefiniti non sono applicabili agli attributi. Ciò è conforme alla sezione 5.2 delle specifiche W3C Namespaces nelle raccomandazioni XML. Se in un attributo viene fatto riferimento all'URI di uno spazio dei nomi, ma non viene specificato un prefisso, il writer genera un prefisso per l'attributo.

Durante la scrittura di un elemento vuoto, uno spazio supplementare viene aggiunto tra il nome di tag e il tag di chiusura, ad esempio <item />, garantendo la compatibilità con le versioni meno recenti dei browser.

Quando String è utilizzato come parametro del metodo, null e String.Empty sono equivalenti. String.Empty segue le regole W3C.

Per scrivere dati fortemente tipizzati, utilizzare la classe XmlConvert per convertire i tipi di dati in stringa. Il codice C# riportato di seguito consente ad esempio di convertire i dati da Double a String e di scrivere l'elemento <price>19.95</price>.

 Double price = 19.95;
 writer.WriteElementString("price", XmlConvert.ToString(price));

XmlTextWriter non verifica quanto segue:

  • Caratteri non validi nei nomi degli elementi e degli attributi.

  • Caratteri Unicode non corrispondenti alla codifica specificata. Se i caratteri Unicode non corrispondono alla codifica specificata, l'XmlTextWriter non effettua l'escape dei caratteri Unicode in entità di caratteri.

  • Attributi duplicati.

  • Caratteri contenuti nell'identificatore pubblico DOCTYPE o nell'identificatore di sistema.

Per ulteriori informazioni sulla scrittura di dati XLM, vedere Scrittura di XML con XmlWriter.

Considerazioni sulla sicurezza

Quando si utilizza la classe XmlTextWriter, è opportuno tenere in considerazione gli elementi riportati di seguito.

  • Le eccezioni generate dalla classe XmlTextWriter possono rivelare informazioni sui percorsi che è preferibile non propagare all'applicazione. Le applicazioni devono intercettare le eccezioni ed elaborarle in modo appropriato.

  • Quando si passa la classe XmlTextWriter a un'altra applicazione, il flusso sottostante viene esposto a tale applicazione. Se è necessario passare la classe XmlTextWriter a un'applicazione semi-trusted, utilizzare invece un oggetto XmlWriter creato dal metodo Create.

  • La classe XmlTextWriter non convalida i dati passati ai metodi WriteDocType o WriteRaw. Non passare dati arbitrari a tali metodi.

  • Se le impostazioni predefinite vengono modificate, non è sicuro che l'output generato sia composto da dati XML in formato corretto.

  • Non accettare componenti di supporto, ad esempio un oggetto Encoding proveniente da un'origine non attendibile.

Informazioni sulla versione

.NET Framework

Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1
Piattaforme

Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Vedere anche

Riferimenti

Altre risorse