XmlTextWriter Classe

Definizione

Rappresenta un writer che fornisce un modo rapido, non memorizzato nella cache, di generare flussi o file contenenti dati XML conformi alle raccomandazioni W3C Extensible Markup Language (XML) 1.0 e spazi dei nomi nei consigli XML.

È consigliabile usare invece la XmlWriter classe .

public ref class XmlTextWriter : System::Xml::XmlWriter
public class XmlTextWriter : System.Xml.XmlWriter
type XmlTextWriter = class
    inherit XmlWriter
Public Class XmlTextWriter
Inherits XmlWriter
Ereditarietà
XmlTextWriter

Commenti

La XmlTextWriter classe implementa la XmlWriter classe .

Note

È consigliabile creare XmlWriter istanze usando il XmlWriter.Create metodo e la XmlWriterSettings classe per sfruttare le nuove funzionalità.

XmlTextWriter mantiene uno stack dei namespace corrispondente a tutti i namespace definiti nello stack di elementi corrente. XmlTextWriter ti consente di 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();

Questo codice C# genera l'output seguente. XmlTextWriter sposta la dichiarazione dello spazio dei nomi all'elemento radice per evitare che venga duplicata sui due elementi figlio. Gli elementi figlio prelevano il prefisso dalla dichiarazione dello spazio dei nomi.

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

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 sostituito da "abc" per produrre l'elemento XML <x:node xmlns:x="abc"/>.

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

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

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 sono presenti più dichiarazioni dello spazio dei nomi che eseguono il mapping di prefissi diversi allo stesso URI dello spazio dei nomi, XmlTextWriter scorre lo stack di dichiarazioni dello spazio dei nomi indietro e sceglie quello 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();

In questo esempio C#, poiché la WriteAttributeString chiamata non specifica un prefisso, il writer usa l'ultimo prefisso inserito nello stack dello spazio dei nomi e produce il codice XML seguente:

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

Se si verificano conflitti tra spazi dei nomi, XmlTextWriter li risolve generando prefissi alternativi. Ad esempio, se un attributo e un elemento hanno lo stesso prefisso ma spazi dei nomi diversi, XmlWriter genera 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 su 1 per ogni elemento.

Gli attributi associati a un URI dello spazio dei nomi devono avere un prefisso (gli spazi dei nomi predefiniti non si applicano agli attributi). Questo comportamento è conforme alla sezione 5.2 della raccomandazione "Namespaces in XML" del W3C. Se un attributo fa riferimento a un URI dello spazio dei nomi, ma non specifica un prefisso, il writer genera un prefisso per l'attributo.

Quando si scrive un elemento vuoto, viene aggiunto uno spazio aggiuntivo tra il nome del tag e il tag di chiusura, ad esempio <item />. Ciò garantisce la compatibilità con i browser meno recenti.

Quando un String viene usato come parametro del metodo, null e String.Empty sono equivalenti. String.Empty segue le regole W3C.

Per scrivere dati fortemente tipizzati, usare la classe XmlConvert per convertire i tipi di dati in stringhe. Ad esempio, il codice C# seguente converte i dati da Double a String e scrive 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 attributi e degli elementi.
  • Caratteri Unicode che non rientrano nella codifica specificata. Se i caratteri Unicode non rientrano nella codifica specificata, non esegue l'escape XmlTextWriter dei caratteri Unicode in entità di caratteri.
  • Attributi duplicati.
  • Caratteri nell'identificatore pubblico o nell'identificatore di sistema DOCTYPE.

Considerazioni relative alla sicurezza

Gli elementi seguenti sono aspetti da considerare quando si lavora con la XmlTextWriter classe .

  • Le eccezioni generate da XmlTextWriter possono divulgare informazioni sul percorso che non si desidera visualizzare nell'applicazione. Le applicazioni devono intercettare le eccezioni ed elaborarle in modo appropriato.

  • Quando si passa XmlTextWriter a un'altra applicazione, il flusso sottostante viene esposto a tale applicazione. Se hai bisogno di passare il XmlTextWriter a un'applicazione semi-attendibile, dovresti invece usare un oggetto creato dal metodo XmlWriter.

  • La XmlTextWriter non convalida i dati che vengono passati ai metodi WriteDocType o WriteRaw. Non è consigliabile passare dati arbitrari a questi metodi.

  • Se le impostazioni predefinite vengono modificate, non vi è alcuna garanzia che l'output generato sia di dati XML ben formati.

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

Costruttori

Nome Descrizione
XmlTextWriter(Stream, Encoding)

Crea un'istanza della XmlTextWriter classe utilizzando il flusso e la codifica specificati.

XmlTextWriter(String, Encoding)

Crea un'istanza della XmlTextWriter classe utilizzando il file specificato.

XmlTextWriter(TextWriter)

Crea un'istanza della XmlTextWriter classe utilizzando l'oggetto specificato TextWriter.

Proprietà

Nome Descrizione
BaseStream

Ottiene l'oggetto flusso sottostante.

Formatting

Indica la formattazione dell'output.

Indentation

Ottiene o imposta il numero di IndentChars da scrivere per ogni livello nella gerarchia quando Formatting è impostato su Formatting.Indented.

IndentChar

Ottiene o imposta il carattere da utilizzare per il rientro quando Formatting è impostato su Formatting.Indented.

Namespaces

Ottiene o imposta un valore che indica se eseguire il supporto dello spazio dei nomi.

QuoteChar

Ottiene o imposta il carattere da utilizzare per racchiudere tra virgolette i valori dell'attributo.

Settings

Ottiene l'oggetto XmlWriterSettings utilizzato per creare questa XmlWriter istanza.

(Ereditato da XmlWriter)
WriteState

Ottiene lo stato del writer.

XmlLang

Ottiene l'ambito corrente xml:lang .

XmlSpace

Ottiene un oggetto XmlSpace che rappresenta l'ambito corrente xml:space .

Metodi

Nome Descrizione
Close()

Chiude questo flusso e il flusso sottostante.

Dispose()

Rilascia tutte le risorse usate dall'istanza corrente della XmlWriter classe .

(Ereditato da XmlWriter)
Dispose(Boolean)

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

(Ereditato da XmlWriter)
DisposeAsync()

Esegue attività definite dall'applicazione associate alla liberazione, al rilascio o alla reimpostazione asincrona delle risorse non gestite.

(Ereditato da XmlWriter)
DisposeAsyncCore()

Esegue attività definite dall'applicazione associate alla liberazione, al rilascio o alla reimpostazione asincrona delle risorse gestite.

(Ereditato da XmlWriter)
Equals(Object)

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

(Ereditato da Object)
Flush()

Scarica tutto ciò che si trova nel buffer nei flussi sottostanti e scarica anche il flusso sottostante.

FlushAsync()

Scarica in modo asincrono qualsiasi elemento nel buffer nei flussi sottostanti e scarica anche il flusso sottostante.

(Ereditato da XmlWriter)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
LookupPrefix(String)

Restituisce il prefisso più vicino definito nell'ambito dello spazio dei nomi corrente per l'URI dello spazio dei nomi.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
WriteAttributes(XmlReader, Boolean)

Quando sottoposto a override in una classe derivata, scrive tutti gli attributi trovati nella posizione corrente in XmlReader.

(Ereditato da XmlWriter)
WriteAttributesAsync(XmlReader, Boolean)

Scrive in modo asincrono tutti gli attributi trovati nella posizione corrente in XmlReader.

(Ereditato da XmlWriter)
WriteAttributeString(String, String, String, String)

In caso di 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)
WriteAttributeString(String, String, String)

In caso di 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)

In caso di override in una classe derivata, scrive l'attributo con il nome e il valore locali specificati.

(Ereditato da XmlWriter)
WriteAttributeStringAsync(String, String, String, String)

Scrive in modo asincrono l'attributo con il prefisso, il nome locale, l'URI dello spazio dei nomi e il valore specificati.

(Ereditato da XmlWriter)
WriteBase64(Byte[], Int32, Int32)

Codifica i byte binari specificati come base64 e scrive il testo risultante.

WriteBase64Async(Byte[], Int32, Int32)

Codifica in modo asincrono i byte binari specificati come Base64 e scrive il testo risultante.

(Ereditato da XmlWriter)
WriteBinHex(Byte[], Int32, Int32)

Codifica i byte binari specificati come binhex e scrive il testo risultante.

WriteBinHexAsync(Byte[], Int32, Int32)

Codifica in modo asincrono i byte binari specificati come BinHex e scrive il testo risultante.

(Ereditato da XmlWriter)
WriteCData(String)

Scrive un <![ CDATA[...]]> blocco contenente il testo specificato.

WriteCDataAsync(String)

Scrive in modo asincrono un <![ CDATA[...]]> blocco contenente il testo specificato.

(Ereditato da XmlWriter)
WriteCharEntity(Char)

Forza la generazione di un'entità carattere per il valore di carattere Unicode specificato.

WriteCharEntityAsync(Char)

Forza in modo asincrono la generazione di un'entità carattere per il valore di carattere Unicode specificato.

(Ereditato da XmlWriter)
WriteChars(Char[], Int32, Int32)

Scrive testo un buffer alla volta.

WriteCharsAsync(Char[], Int32, Int32)

Scrive in modo asincrono testo un buffer alla volta.

(Ereditato da XmlWriter)
WriteComment(String)

Scrive un commento <--...--> contenente il testo specificato.

WriteCommentAsync(String)

Scrive in modo asincrono un commento <--...--> contenente il testo specificato.

(Ereditato da XmlWriter)
WriteDocType(String, String, String, String)

Scrive la dichiarazione DOCTYPE con il nome e gli attributi facoltativi specificati.

WriteDocTypeAsync(String, String, String, String)

Scrive in modo asincrono la dichiarazione DOCTYPE con il nome e gli attributi facoltativi specificati.

(Ereditato da XmlWriter)
WriteElementString(String, String, String, String)

Scrive un elemento con il prefisso, il nome locale, l'URI dello spazio dei nomi 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)

Scrive un elemento con il nome e il valore locali specificati.

(Ereditato da XmlWriter)
WriteElementStringAsync(String, String, String, String)

Scrive in modo asincrono un elemento con il prefisso, il nome locale, l'URI dello spazio dei nomi e il valore specificati.

(Ereditato da XmlWriter)
WriteEndAttribute()

Chiude la chiamata precedente WriteStartAttribute(String, String, String) .

WriteEndAttributeAsync()

Chiude in modo asincrono la chiamata precedente WriteStartAttribute(String, String) .

(Ereditato da XmlWriter)
WriteEndDocument()

Chiude tutti gli elementi o gli attributi aperti e riporta il writer nello stato Start.

WriteEndDocumentAsync()

Chiude in modo asincrono tutti gli attributi o gli elementi aperti e riporta il writer nello stato Start.

(Ereditato da XmlWriter)
WriteEndElement()

Chiude un elemento e apre l'ambito dello spazio dei nomi corrispondente.

WriteEndElementAsync()

Chiude in modo asincrono un elemento e apre l'ambito dello spazio dei nomi corrispondente.

(Ereditato da XmlWriter)
WriteEntityRef(String)

Scrive un riferimento a un'entità come &name;.

WriteEntityRefAsync(String)

Scrive in modo asincrono un riferimento a un'entità come &name;.

(Ereditato da XmlWriter)
WriteFullEndElement()

Chiude un elemento e apre l'ambito dello spazio dei nomi corrispondente.

WriteFullEndElementAsync()

Chiude in modo asincrono un elemento e apre l'ambito dello spazio dei nomi corrispondente.

(Ereditato da XmlWriter)
WriteName(String)

Scrive il nome specificato, assicurandosi che sia un nome valido in base alla raccomandazione W3C XML 1.0.

WriteNameAsync(String)

Scrive in modo asincrono il nome specificato, assicurandosi che sia un nome valido in base alla raccomandazione W3C XML 1.0 (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name).

(Ereditato da XmlWriter)
WriteNmToken(String)

Scrive il nome specificato, verificando che sia valido NmToken in base alla raccomandazione W3C XML 1.0.

WriteNmTokenAsync(String)

Scrive in modo asincrono il nome specificato, assicurandosi che sia un NmToken valido in base alla raccomandazione W3C XML 1.0 (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name).

(Ereditato da XmlWriter)
WriteNode(XmlReader, Boolean)

Quando ne viene eseguito l'override in una classe derivata, copia tutti gli elementi dal lettore al writer e sposta il lettore all'inizio dell'elemento di pari livello successivo.

(Ereditato da XmlWriter)
WriteNode(XPathNavigator, Boolean)

Copia tutti gli elementi dall'oggetto XPathNavigator al writer. La posizione dell'oggetto XPathNavigator rimane invariata.

(Ereditato da XmlWriter)
WriteNodeAsync(XmlReader, Boolean)

Copia in modo asincrono tutti gli elementi dal lettore al writer e sposta il lettore all'inizio del successivo elemento di pari livello.

(Ereditato da XmlWriter)
WriteNodeAsync(XPathNavigator, Boolean)

Copia in modo asincrono tutti gli elementi dall'oggetto XPathNavigator al writer. La posizione dell'oggetto XPathNavigator rimane invariata.

(Ereditato da XmlWriter)
WriteProcessingInstruction(String, String)

Scrive un'istruzione di elaborazione con uno spazio tra il nome e il testo come indicato di seguito: <?name text?>.

WriteProcessingInstructionAsync(String, String)

Scrive in modo asincrono un'istruzione di elaborazione con uno spazio tra il nome e il testo come indicato di seguito: <?name text?>.

(Ereditato da XmlWriter)
WriteQualifiedName(String, String)

Scrive il nome completo dello spazio dei nomi. Questo metodo cerca il prefisso incluso nell'ambito dello spazio dei nomi specificato.

WriteQualifiedNameAsync(String, String)

Scrive in modo asincrono il nome completo dello spazio dei nomi. Questo metodo cerca il prefisso incluso nell'ambito dello spazio dei nomi specificato.

(Ereditato da XmlWriter)
WriteRaw(Char[], Int32, Int32)

Scrive manualmente il markup non elaborato da un buffer di caratteri.

WriteRaw(String)

Scrive manualmente il markup non elaborato da una stringa.

WriteRawAsync(Char[], Int32, Int32)

Scrive manualmente markup non elaborato da un buffer di caratteri in modo asincrono.

(Ereditato da XmlWriter)
WriteRawAsync(String)

Scrive manualmente il markup non elaborato in modo asincrono da una stringa.

(Ereditato da XmlWriter)
WriteStartAttribute(String, String, String)

Scrive l'inizio di un attributo.

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)

Scrive l'inizio di un attributo con il nome locale specificato.

(Ereditato da XmlWriter)
WriteStartAttributeAsync(String, String, String)

Scrive in modo asincrono l'inizio di un attributo con il prefisso, il nome locale e l'URI dello spazio dei nomi specificati.

(Ereditato da XmlWriter)
WriteStartDocument()

Scrive la dichiarazione XML con la versione "1.0".

WriteStartDocument(Boolean)

Scrive la dichiarazione XML con la versione "1.0" e l'attributo autonomo.

WriteStartDocumentAsync()

Scrive in modo asincrono la dichiarazione XML con la versione "1.0".

(Ereditato da XmlWriter)
WriteStartDocumentAsync(Boolean)

Scrive in modo asincrono la dichiarazione XML con la versione "1.0" e l'attributo autonomo.

(Ereditato da XmlWriter)
WriteStartElement(String, String, String)

Scrive il tag iniziale specificato e lo associa allo spazio dei nomi e al prefisso specificati.

WriteStartElement(String, String)

Quando sottoposto a override in una classe derivata, scrive il tag iniziale specificato e lo associa allo spazio dei nomi specificato.

(Ereditato da XmlWriter)
WriteStartElement(String)

Quando sottoposto a override in una classe derivata, scrive un tag iniziale con il nome locale specificato.

(Ereditato da XmlWriter)
WriteStartElementAsync(String, String, String)

Scrive in modo asincrono il tag iniziale specificato e lo associa allo spazio dei nomi e al prefisso specificati.

(Ereditato da XmlWriter)
WriteString(String)

Scrive il contenuto di testo specificato.

WriteStringAsync(String)

Scrive in modo asincrono il contenuto di testo specificato.

(Ereditato da XmlWriter)
WriteSurrogateCharEntity(Char, Char)

Genera e scrive l'entità carattere surrogato per la coppia di caratteri surrogati.

WriteSurrogateCharEntityAsync(Char, Char)

Genera e scrive in modo asincrono l'entità carattere surrogato per la coppia di caratteri surrogati.

(Ereditato da XmlWriter)
WriteValue(Boolean)

Scrive un Boolean valore.

(Ereditato da XmlWriter)
WriteValue(DateTime)

Scrive un DateTime valore.

(Ereditato da XmlWriter)
WriteValue(DateTimeOffset)

Scrive un DateTimeOffset valore.

(Ereditato da XmlWriter)
WriteValue(Decimal)

Scrive un Decimal valore.

(Ereditato da XmlWriter)
WriteValue(Double)

Scrive un Double valore.

(Ereditato da XmlWriter)
WriteValue(Int32)

Scrive un Int32 valore.

(Ereditato da XmlWriter)
WriteValue(Int64)

Scrive un Int64 valore.

(Ereditato da XmlWriter)
WriteValue(Object)

Scrive il valore dell'oggetto.

(Ereditato da XmlWriter)
WriteValue(Single)

Scrive un numero a virgola mobile e precisione singola.

(Ereditato da XmlWriter)
WriteValue(String)

Scrive un String valore.

(Ereditato da XmlWriter)
WriteWhitespace(String)

Scrive lo spazio vuoto specificato.

WriteWhitespaceAsync(String)

Scrive in modo asincrono lo spazio vuoto specificato.

(Ereditato da XmlWriter)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IDisposable.Dispose()

Per una descrizione di questo membro, vedere Dispose().

(Ereditato da XmlWriter)

Metodi di estensione

Nome Descrizione
ConfigureAwait(IAsyncDisposable, Boolean)

Configura il modo in cui verranno eseguite le attese nelle attività restituite da un oggetto eliminabile asincrono.

Si applica a

Vedi anche