XmlWriter Class
Represents a writer that provides a fast, non-cached, forward-only means of generating streams or files containing XML data.
Namespace: System.Xml
Assembly: System.Xml (in System.Xml.dll)
The XmlWriter type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() ![]() ![]() | Settings | Gets the XmlWriterSettings object used to create this XmlWriter instance. |
![]() ![]() ![]() ![]() | WriteState | When overridden in a derived class, gets the state of the writer. |
![]() ![]() ![]() ![]() | XmlLang | When overridden in a derived class, gets the current xml:lang scope. |
![]() ![]() ![]() ![]() | XmlSpace | When overridden in a derived class, gets an XmlSpace representing the current xml:space scope. |
| Name | Description | |
|---|---|---|
![]() ![]() | Close | When overridden in a derived class, closes this stream and the underlying stream. |
![]() ![]() ![]() ![]() ![]() | Create(Stream) | Creates a new XmlWriter instance using the specified stream. |
![]() ![]() ![]() | Create(String) | Creates a new XmlWriter instance using the specified filename. |
![]() ![]() ![]() ![]() ![]() | Create(StringBuilder) | Creates a new XmlWriter instance using the specified StringBuilder. |
![]() ![]() ![]() ![]() ![]() | Create(TextWriter) | Creates a new XmlWriter instance using the specified TextWriter. |
![]() ![]() ![]() ![]() ![]() | Create(XmlWriter) | Creates a new XmlWriter instance using the specified XmlWriter object. |
![]() ![]() ![]() ![]() ![]() | Create(Stream, XmlWriterSettings) | Creates a new XmlWriter instance using the stream and XmlWriterSettings object. |
![]() ![]() ![]() | Create(String, XmlWriterSettings) | Creates a new XmlWriter instance using the filename and XmlWriterSettings object. |
![]() ![]() ![]() ![]() ![]() | Create(StringBuilder, XmlWriterSettings) | Creates a new XmlWriter instance using the StringBuilder and XmlWriterSettings objects. |
![]() ![]() ![]() ![]() ![]() | Create(TextWriter, XmlWriterSettings) | Creates a new XmlWriter instance using the TextWriter and XmlWriterSettings objects. |
![]() ![]() ![]() ![]() ![]() | Create(XmlWriter, XmlWriterSettings) | Creates a new XmlWriter instance using the specified XmlWriter and XmlWriterSettings objects. |
![]() ![]() ![]() | Dispose() | Releases all resources used by the current instance of the XmlWriter class. |
![]() ![]() ![]() ![]() | Dispose(Boolean) | Releases the unmanaged resources used by the XmlWriter and optionally releases the managed resources. |
![]() ![]() ![]() ![]() | Equals(Object) | Determines whether the specified object is equal to the current object. (Inherited from Object.) |
![]() ![]() ![]() ![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() ![]() ![]() ![]() | Flush | When overridden in a derived class, flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. |
![]() ![]() | FlushAsync | Asynchronously flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. |
![]() ![]() ![]() ![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() ![]() ![]() ![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() ![]() ![]() ![]() | LookupPrefix | When overridden in a derived class, returns the closest prefix defined in the current namespace scope for the namespace URI. |
![]() ![]() ![]() ![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() ![]() ![]() ![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
![]() ![]() ![]() ![]() | WriteAttributes | When overridden in a derived class, writes out all the attributes found at the current position in the XmlReader. |
![]() ![]() | WriteAttributesAsync | Asynchronously writes out all the attributes found at the current position in the XmlReader. |
![]() ![]() ![]() ![]() | WriteAttributeString(String, String) | When overridden in a derived class, writes out the attribute with the specified local name and value. |
![]() ![]() ![]() ![]() | WriteAttributeString(String, String, String) | When overridden in a derived class, writes an attribute with the specified local name, namespace URI, and value. |
![]() ![]() ![]() ![]() | WriteAttributeString(String, String, String, String) | When overridden in a derived class, writes out the attribute with the specified prefix, local name, namespace URI, and value. |
![]() ![]() | WriteAttributeStringAsync | Asynchronously writes out the attribute with the specified prefix, local name, namespace URI, and value. |
![]() ![]() ![]() ![]() | WriteBase64 | When overridden in a derived class, encodes the specified binary bytes as Base64 and writes out the resulting text. |
![]() ![]() | WriteBase64Async | Asynchronously encodes the specified binary bytes as Base64 and writes out the resulting text. |
![]() ![]() ![]() ![]() | WriteBinHex | When overridden in a derived class, encodes the specified binary bytes as BinHex and writes out the resulting text. |
![]() ![]() | WriteBinHexAsync | Asynchronously encodes the specified binary bytes as BinHex and writes out the resulting text. |
![]() ![]() ![]() ![]() | WriteCData | When overridden in a derived class, writes out a <![CDATA[...]]> block containing the specified text. |
![]() ![]() | WriteCDataAsync | Asynchronously writes out a <![CDATA[...]]> block containing the specified text. |
![]() ![]() ![]() ![]() | WriteCharEntity | When overridden in a derived class, forces the generation of a character entity for the specified Unicode character value. |
![]() ![]() | WriteCharEntityAsync | Asynchronously forces the generation of a character entity for the specified Unicode character value. |
![]() ![]() ![]() ![]() | WriteChars | When overridden in a derived class, writes text one buffer at a time. |
![]() ![]() | WriteCharsAsync | Asynchronously writes text one buffer at a time. |
![]() ![]() ![]() ![]() | WriteComment | When overridden in a derived class, writes out a comment <!--...--> containing the specified text. |
![]() ![]() | WriteCommentAsync | Asynchronously writes out a comment <!--...--> containing the specified text. |
![]() ![]() ![]() ![]() | WriteDocType | When overridden in a derived class, writes the DOCTYPE declaration with the specified name and optional attributes. |
![]() ![]() | WriteDocTypeAsync | Asynchronously writes the DOCTYPE declaration with the specified name and optional attributes. |
![]() ![]() ![]() ![]() | WriteElementString(String, String) | Writes an element with the specified local name and value. |
![]() ![]() ![]() ![]() | WriteElementString(String, String, String) | Writes an element with the specified local name, namespace URI, and value. |
![]() ![]() ![]() ![]() | WriteElementString(String, String, String, String) | Writes an element with the specified prefix, local name, namespace URI, and value. |
![]() ![]() | WriteElementStringAsync | Asynchronously writes an element with the specified prefix, local name, namespace URI, and value. |
![]() ![]() ![]() ![]() | WriteEndAttribute | When overridden in a derived class, closes the previous WriteStartAttribute call. |
![]() ![]() | WriteEndAttributeAsync | Asynchronously closes the previous WriteStartAttribute call. |
![]() ![]() ![]() ![]() | WriteEndDocument | When overridden in a derived class, closes any open elements or attributes and puts the writer back in the Start state. |
![]() ![]() | WriteEndDocumentAsync | Asynchronously closes any open elements or attributes and puts the writer back in the Start state. |
![]() ![]() ![]() ![]() | WriteEndElement | When overridden in a derived class, closes one element and pops the corresponding namespace scope. |
![]() ![]() | WriteEndElementAsync | Asynchronously closes one element and pops the corresponding namespace scope. |
![]() ![]() ![]() ![]() | WriteEntityRef | When overridden in a derived class, writes out an entity reference as &name;. |
![]() ![]() | WriteEntityRefAsync | Asynchronously writes out an entity reference as &name;. |
![]() ![]() ![]() ![]() | WriteFullEndElement | When overridden in a derived class, closes one element and pops the corresponding namespace scope. |
![]() ![]() | WriteFullEndElementAsync | Asynchronously closes one element and pops the corresponding namespace scope. |
![]() ![]() ![]() ![]() | WriteName | When overridden in a derived class, writes out the specified name, ensuring it is a valid name according to the W3C XML 1.0 recommendation (http://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). |
![]() ![]() | WriteNameAsync | Asynchronously writes out the specified name, ensuring it is a valid name according to the W3C XML 1.0 recommendation (http://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). |
![]() ![]() ![]() ![]() | WriteNmToken | When overridden in a derived class, writes out the specified name, ensuring it is a valid NmToken according to the W3C XML 1.0 recommendation (http://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). |
![]() ![]() | WriteNmTokenAsync | Asynchronously writes out the specified name, ensuring it is a valid NmToken according to the W3C XML 1.0 recommendation (http://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). |
![]() ![]() ![]() ![]() | WriteNode(XmlReader, Boolean) | When overridden in a derived class, copies everything from the reader to the writer and moves the reader to the start of the next sibling. |
![]() | WriteNode(XPathNavigator, Boolean) | Copies everything from the XPathNavigator object to the writer. The position of the XPathNavigator remains unchanged. |
![]() ![]() | WriteNodeAsync(XmlReader, Boolean) | Asynchronously copies everything from the reader to the writer and moves the reader to the start of the next sibling. |
![]() | WriteNodeAsync(XPathNavigator, Boolean) | Asynchronously copies everything from the XPathNavigator object to the writer. The position of the XPathNavigator remains unchanged. |
![]() ![]() ![]() ![]() | WriteProcessingInstruction | When overridden in a derived class, writes out a processing instruction with a space between the name and text as follows: <?name text?>. |
![]() ![]() | WriteProcessingInstructionAsync | Asynchronously writes out a processing instruction with a space between the name and text as follows: <?name text?>. |
![]() ![]() ![]() ![]() | WriteQualifiedName | When overridden in a derived class, writes out the namespace-qualified name. This method looks up the prefix that is in scope for the given namespace. |
![]() ![]() | WriteQualifiedNameAsync | Asynchronously writes out the namespace-qualified name. This method looks up the prefix that is in scope for the given namespace. |
![]() ![]() ![]() ![]() | WriteRaw(String) | When overridden in a derived class, writes raw markup manually from a string. |
![]() ![]() ![]() ![]() | WriteRaw(Char[], Int32, Int32) | When overridden in a derived class, writes raw markup manually from a character buffer. |
![]() ![]() | WriteRawAsync(String) | Asynchronously writes raw markup manually from a string. |
![]() ![]() | WriteRawAsync(Char[], Int32, Int32) | Asynchronously writes raw markup manually from a character buffer. |
![]() ![]() ![]() ![]() | WriteStartAttribute(String) | Writes the start of an attribute with the specified local name. |
![]() ![]() ![]() ![]() | WriteStartAttribute(String, String) | Writes the start of an attribute with the specified local name and namespace URI. |
![]() ![]() ![]() ![]() | WriteStartAttribute(String, String, String) | When overridden in a derived class, writes the start of an attribute with the specified prefix, local name, and namespace URI. |
![]() ![]() | WriteStartAttributeAsync | Asynchronously writes the start of an attribute with the specified prefix, local name, and namespace URI. |
![]() ![]() ![]() ![]() | WriteStartDocument() | When overridden in a derived class, writes the XML declaration with the version "1.0". |
![]() ![]() ![]() ![]() | WriteStartDocument(Boolean) | When overridden in a derived class, writes the XML declaration with the version "1.0" and the standalone attribute. |
![]() ![]() | WriteStartDocumentAsync() | Asynchronously writes the XML declaration with the version "1.0". |
![]() ![]() | WriteStartDocumentAsync(Boolean) | Asynchronously writes the XML declaration with the version "1.0" and the standalone attribute. |
![]() ![]() ![]() ![]() | WriteStartElement(String) | When overridden in a derived class, writes out a start tag with the specified local name. |
![]() ![]() ![]() ![]() | WriteStartElement(String, String) | When overridden in a derived class, writes the specified start tag and associates it with the given namespace. |
![]() ![]() ![]() ![]() | WriteStartElement(String, String, String) | When overridden in a derived class, writes the specified start tag and associates it with the given namespace and prefix. |
![]() ![]() | WriteStartElementAsync | Asynchronously writes the specified start tag and associates it with the given namespace and prefix. |
![]() ![]() ![]() ![]() | WriteString | When overridden in a derived class, writes the given text content. |
![]() ![]() | WriteStringAsync | Asynchronously writes the given text content. |
![]() ![]() ![]() ![]() | WriteSurrogateCharEntity | When overridden in a derived class, generates and writes the surrogate character entity for the surrogate character pair. |
![]() ![]() | WriteSurrogateCharEntityAsync | Asynchronously generates and writes the surrogate character entity for the surrogate character pair. |
![]() ![]() ![]() ![]() | WriteValue(Boolean) | Writes a Boolean value. |
![]() ![]() | WriteValue(DateTime) | Writes a DateTime value. |
![]() ![]() | WriteValue(DateTimeOffset) | Writes a DateTimeOffset value. |
![]() ![]() ![]() ![]() | WriteValue(Decimal) | Writes a Decimal value. |
![]() ![]() ![]() ![]() | WriteValue(Double) | Writes a Double value. |
![]() ![]() ![]() ![]() | WriteValue(Int32) | Writes a Int32 value. |
![]() ![]() ![]() ![]() | WriteValue(Int64) | Writes a Int64 value. |
![]() ![]() ![]() ![]() | WriteValue(Object) | Writes the object value. |
![]() ![]() ![]() ![]() | WriteValue(Single) | Writes a single-precision floating-point number. |
![]() ![]() ![]() ![]() | WriteValue(String) | Writes a String value. |
![]() ![]() ![]() ![]() | WriteWhitespace | When overridden in a derived class, writes out the given white space. |
![]() ![]() | WriteWhitespaceAsync | Asynchronously writes out the given white space. |
The XmlWriter class supports the W3C Extensible Markup Language (XML) 1.0 and the Namespaces in XML recommendations.
Note |
|---|
Although the Microsoft .NET Framework includes the XmlTextWriter class, which is an implementation of the XmlWriter class, in the 2.0 release, it is recommended that you use the Create method to create new XmlWriter objects. The Create method allows you to specify the features to support on the created XmlWriter object, and it also allows you to take full advantage of the new features introduced in the 2.0 release. |
Note |
|---|
When you use the XmlWriter methods to output XML, the elements and attributes will not be written until you call the Close method. For example, if you are using the XmlWriter to populate an XmlDocument, until you close the XmlWriter, you will not be able to observe the written elements and attributes in the target document. |
For more information about the XmlWriter class, see Writing XML with the XmlWriter.
Not all synchronous methods have an equivalent asynchronous method. The following table shows the equivalent asynchronous usage for synchronous methods.
Synchronous Method | Equivalent Asynchronous method/code |
|---|---|
WriteStartAttribute and WriteEndAttribute | Use WriteAttributeStringAsync method instead |
WriteValue | Convert the value to string and call the WriteStringAsync method |
Security Considerations
The following items are things to consider when working with the XmlWriter class.
Exceptions thrown by the XmlWriter can disclose path information that you do not want bubbled up to the application. Your applications must catch exceptions and process them appropriately.
The XmlWriter does not validate any data that is passed to the WriteDocType or WriteRaw methods. You should not pass arbitrary data to these methods.
The following example code shows how to use the asynchronous API to generate XML.
async Task TestWriter(Stream stream)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Async = true;
using (XmlWriter writer = XmlWriter.Create(stream, settings)) {
await writer.WriteStartElementAsync("pf", "root", "http://ns");
await writer.WriteStartElementAsync(null, "sub", null);
await writer.WriteAttributeStringAsync(null, "att", null, "val");
await writer.WriteStringAsync("text");
await writer.WriteEndElementAsync();
await writer.WriteProcessingInstructionAsync("pName", "pValue");
await writer.WriteCommentAsync("cValue");
await writer.WriteCDataAsync("cdata value");
await writer.WriteEndElementAsync();
await writer.FlushAsync();
}
}
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.









Note