XmlWriter Class

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Represents a writer that provides a fast, non-cached, forward-only means of generating streams or files containing XML data.

Inheritance Hierarchy

System..::.Object
  System.Xml..::.XmlWriter
    System.Xml..::.XmlDictionaryWriter

Namespace:  System.Xml
Assembly:  System.Xml (in System.Xml.dll)

Syntax

Public MustInherit Class XmlWriter _
    Implements IDisposable
public abstract class XmlWriter : IDisposable

The XmlWriter type exposes the following members.

Constructors

  Name Description
XmlWriter Initializes a new instance of the XmlWriter class.

Top

Properties

  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.

Top

Methods

  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(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(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 the Object 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) When overridden in a derived class, writes an element with the specified local name and value.
WriteElementString(String, String, String) When overridden in a derived class, writes an element with the specified local name, namespace URI, and value.
WriteElementString(String, String, String, String) Writes an element with the specified 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 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.
WriteNodeAsync Asynchronously copies everything from the reader to the writer and moves the reader to the start of the next sibling.
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(array<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(array<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.

Top

Remarks

The XmlWriter class supports the W3C Extensible Markup Language (XML) 1.0 and the Namespaces in XML recommendations.

Note

You must use the Create method to create XmlWriter object.

Note   When you use the XmlWriter methods to output XML, the elements and attributes will not be written until you call the Close 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.

Examples

The following example navigates through the stream to determine the current node type, and then uses XmlWriter to output the XmlReader content.

Dim output As StringBuilder = New StringBuilder()

Dim xmlString As String = "<?xml version='1.0'?>" & _
                "<!-- This is a sample XML document -->" & _
                "<Items>" & _
                  "<Item>test with a child element <more/> stuff</Item>" & _
                "</Items>"
' Create an XmlReader
Using reader As XmlReader = XmlReader.Create(New StringReader(xmlString))
    Dim ws As XmlWriterSettings = New XmlWriterSettings()
    ws.Indent = True
    Using writer As XmlWriter = XmlWriter.Create(output, ws)

        ' Parse the file and display each of the nodes.
        While reader.Read()
            Select Case reader.NodeType
                Case XmlNodeType.Element
                    writer.WriteStartElement(reader.Name)
                Case XmlNodeType.Text
                    writer.WriteString(reader.Value)
                Case XmlNodeType.XmlDeclaration
                Case XmlNodeType.ProcessingInstruction
                    writer.WriteProcessingInstruction(reader.Name, reader.Value)
                Case XmlNodeType.Comment
                    writer.WriteComment(reader.Value)
                Case XmlNodeType.EndElement
                    writer.WriteFullEndElement()
            End Select
        End While
    End Using
End Using
OutputTextBlock.Text = output.ToString()
StringBuilder output = new StringBuilder();

String xmlString =
        @"<?xml version='1.0'?>
        <!-- This is a sample XML document -->
        <Items>
          <Item>test with a child element <more/> stuff</Item>
        </Items>";
// Create an XmlReader
using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
{
    XmlWriterSettings ws = new XmlWriterSettings();
    ws.Indent = true;
    using (XmlWriter writer = XmlWriter.Create(output, ws))
    {

        // Parse the file and display each of the nodes.
        while (reader.Read())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    writer.WriteStartElement(reader.Name);
                    break;
                case XmlNodeType.Text:
                    writer.WriteString(reader.Value);
                    break;
                case XmlNodeType.XmlDeclaration:
                case XmlNodeType.ProcessingInstruction:
                    writer.WriteProcessingInstruction(reader.Name, reader.Value);
                    break;
                case XmlNodeType.Comment:
                    writer.WriteComment(reader.Value);
                    break;
                case XmlNodeType.EndElement:
                    writer.WriteFullEndElement();
                    break;
            }
        }

    }
}
OutputTextBlock.Text = output.ToString();

Version Information

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Platforms

Windows Phone

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

System.Xml Namespace