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.
System.Xml.XmlWriter
System.Xml.XmlTextWriter
Spazio dei nomi: System.Xml
Assembly: System.Xml (in System.Xml.dll)
Public Class XmlTextWriter _ Inherits XmlWriter
public class XmlTextWriter : XmlWriter
public ref class XmlTextWriter : public XmlWriter
type XmlTextWriter = class inherit XmlWriter end
Il tipo XmlTextWriter espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
XmlTextWriter(TextWriter) | Crea un'istanza della classe XmlTextWriter utilizzando l'oggetto TextWriter specificato. |
|
XmlTextWriter(Stream, Encoding) | Crea un'istanza della classe XmlTextWriter utilizzando la codifica e il flusso specificati. |
|
XmlTextWriter(String, Encoding) | Crea un'istanza della classe XmlTextWriter utilizzando il file specificato. |
| Nome | Descrizione | |
|---|---|---|
|
BaseStream | Ottiene l'oggetto flusso sottostante. |
|
Formatting | Indica come viene formattato l'output. |
|
Indentation | Ottiene o imposta il numero di oggetti IndentChars da scrivere per ciascun livello nella gerarchia quando la proprietà Formatting è impostata su Formatting.Indented. |
|
IndentChar | Ottiene o imposta il carattere da utilizzare per il rientro quando la proprietà Formatting è impostata su Formatting.Indented. |
|
Namespaces | Ottiene o imposta un valore che indica se supportare lo spazio dei nomi. |
|
QuoteChar | Ottiene o imposta il carattere da utilizzare per racchiudere tra virgolette i valori degli attributi. |
|
Settings | Ottiene l'oggetto XmlWriterSettings utilizzato per creare questa istanza di XmlWriter. (Ereditato da XmlWriter) |
|
WriteState | Ottiene lo stato del writer. (Esegue l'override di XmlWriter.WriteState). |
|
XmlLang | Ottiene l'ambito xml:lang corrente. (Esegue l'override di XmlWriter.XmlLang). |
|
XmlSpace | Ottiene un oggetto XmlSpace che rappresenta l'ambito xml:space corrente. (Esegue l'override di XmlWriter.XmlSpace). |
| Nome | Descrizione | |
|---|---|---|
|
Close | Chiude questo flusso e quello sottostante. (Esegue l'override di XmlWriter.Close()). |
|
Dispose(Boolean) | Rilascia le risorse non gestite utilizzate dall'oggetto XmlWriter ed eventualmente rilascia le risorse gestite. (Ereditato da XmlWriter) |
|
Equals(Object) | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) |
|
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) |
|
Flush | Svuota il buffer scaricandone il contenuto nei flussi sottostanti, quindi svuota il flusso sottostante. (Esegue l'override di XmlWriter.Flush()). |
|
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
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)). |
|
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
|
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) |
|
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) |
|
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) |
|
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) |
|
WriteBase64 | Codifica i byte binari specificati come valori Base64 e scrive il testo risultante. (Esegue l'override di XmlWriter.WriteBase64(Byte[], Int32, Int32)). |
|
WriteBinHex | Codifica i byte binari specificati come valori BinHex e scrive il testo risultante. (Esegue l'override di XmlWriter.WriteBinHex(Byte[], Int32, Int32)). |
|
WriteCData | Scrive un blocco <![CDATA[...]]> contenente il testo specificato. (Esegue l'override di XmlWriter.WriteCData(String)). |
|
WriteCharEntity | Forza la generazione di un'entità di caratteri per il valore del carattere Unicode specificato. (Esegue l'override di XmlWriter.WriteCharEntity(Char)). |
|
WriteChars | Il testo viene scritto in un buffer alla volta. (Esegue l'override di XmlWriter.WriteChars(Char[], Int32, Int32)). |
|
WriteComment | Scrive un commento <!--...--> contenente il testo specificato. (Esegue l'override di XmlWriter.WriteComment(String)). |
|
WriteDocType | Scrive la dichiarazione DOCTYPE con il nome e gli attributi opzionali specificati. (Esegue l'override di XmlWriter.WriteDocType(String, String, String, String)). |
|
WriteElementString(String, String) | Scrive un elemento con il nome locale e il valore specificati. (Ereditato da XmlWriter) |
|
WriteElementString(String, String, String) | Scrive un elemento con il nome locale, l'URI dello spazio dei nomi e il valore specificati. (Ereditato da XmlWriter) |
|
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) |
|
WriteEndAttribute | Chiude la chiamata al metodo WriteStartAttribute precedente. (Esegue l'override di XmlWriter.WriteEndAttribute()). |
|
WriteEndDocument | Chiude qualsiasi elemento o attributo aperto e riporta il writer allo stato di avvio. (Esegue l'override di XmlWriter.WriteEndDocument()). |
|
WriteEndElement | Chiude un elemento e visualizza l'ambito dello spazio dei nomi corrispondente. (Esegue l'override di XmlWriter.WriteEndElement()). |
|
WriteEntityRef | Scrive un riferimento a entità con formato &name;. (Esegue l'override di XmlWriter.WriteEntityRef(String)). |
|
WriteFullEndElement | Chiude un elemento e visualizza l'ambito dello spazio dei nomi corrispondente. (Esegue l'override di XmlWriter.WriteFullEndElement()). |
|
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)). |
|
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)). |
|
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) |
|
WriteNode(XPathNavigator, Boolean) | Copia tutti gli elementi dall'oggetto XPathNavigator nel writer. La posizione di XPathNavigator resta invariata. (Ereditato da XmlWriter) |
|
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)). |
|
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)). |
|
WriteRaw(String) | Scrive manualmente markup non elaborato in base a una stringa. (Esegue l'override di XmlWriter.WriteRaw(String)). |
|
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)). |
|
WriteStartAttribute(String) | Scrive l'inizio di un attributo con il nome locale specificato. (Ereditato da XmlWriter) |
|
WriteStartAttribute(String, String) | Scrive l'inizio di un attributo con il nome locale e l'URI dello spazio dei nomi specificati. (Ereditato da XmlWriter) |
|
WriteStartAttribute(String, String, String) | Scrive l'inizio di un attributo. (Esegue l'override di XmlWriter.WriteStartAttribute(String, String, String)). |
|
WriteStartDocument() | Scrive la dichiarazione XML con la versione "1.0". (Esegue l'override di XmlWriter.WriteStartDocument()). |
|
WriteStartDocument(Boolean) | Scrive la dichiarazione XML con la versione "1.0" e l'attributo standalone. (Esegue l'override di XmlWriter.WriteStartDocument(Boolean)). |
|
WriteStartElement(String) | Quando sottoposto a override in una classe derivata, scrive un tag iniziale con il nome locale specificato. (Ereditato da XmlWriter) |
|
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) |
|
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)). |
|
WriteString | Scrive il contenuto del testo specificato. (Esegue l'override di XmlWriter.WriteString(String)). |
|
WriteSurrogateCharEntity | Genera e scrive l'entità di caratteri surrogati per la coppia di caratteri surrogati. (Esegue l'override di XmlWriter.WriteSurrogateCharEntity(Char, Char)). |
|
WriteValue(Boolean) | Scrive un valore Boolean. (Ereditato da XmlWriter) |
|
WriteValue(DateTime) | Scrive un valore DateTime. (Ereditato da XmlWriter) |
|
WriteValue(Decimal) | Scrive un valore Decimal. (Ereditato da XmlWriter) |
|
WriteValue(Double) | Scrive un valore Double. (Ereditato da XmlWriter) |
|
WriteValue(Int32) | Scrive un valore Int32. (Ereditato da XmlWriter) |
|
WriteValue(Int64) | Scrive un valore Int64. (Ereditato da XmlWriter) |
|
WriteValue(Object) | Scrive il valore dell'oggetto. (Ereditato da XmlWriter) |
|
WriteValue(Single) | Scrive un numero in virgola mobile e precisione singola. (Ereditato da XmlWriter) |
|
WriteValue(String) | Scrive un valore String. (Ereditato da XmlWriter) |
|
WriteWhitespace | Scrive lo spazio vuoto specificato. (Esegue l'override di XmlWriter.WriteWhitespace(String)). |
| Nome | Descrizione | |
|---|---|---|
|
IDisposable.Dispose | Per una descrizione di questo membro, vedere IDisposable.Dispose. (Ereditato da XmlWriter) |
Questa classe implementa la classe XmlWriter.
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.
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supportato in: 4, 3.5 SP1Windows 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.
Nota