0 out of 1 rated this helpful - Rate this topic

XmlWriter Class

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

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

Namespace:  System.Xml
Assembly:  System.Xml (in System.Xml.dll)
public abstract class XmlWriter : IDisposable

The XmlWriter type exposes the following members.

  Name Description
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 XmlWriter Initializes a new instance of the XmlWriter class.
Top
  Name Description
Public property Supported by Silverlight for Windows Phone Supported by Xbox 360 Settings Gets the XmlWriterSettings object used to create this XmlWriter instance.
Public property Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteState When overridden in a derived class, gets the state of the writer.
Public property Supported by Silverlight for Windows Phone Supported by Xbox 360 XmlLang When overridden in a derived class, gets the current xml:lang scope.
Public property Supported by Silverlight for Windows Phone Supported by Xbox 360 XmlSpace When overridden in a derived class, gets an XmlSpace representing the current xml:space scope.
Top
  Name Description
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Close When overridden in a derived class, closes this stream and the underlying stream.
Public method Static member Supported by Silverlight for Windows Phone Supported by Xbox 360 Create(Stream) Creates a new XmlWriter instance using the specified stream.
Public method Static member Supported by Silverlight for Windows Phone Supported by Xbox 360 Create(StringBuilder) Creates a new XmlWriter instance using the specified StringBuilder.
Public method Static member Supported by Silverlight for Windows Phone Supported by Xbox 360 Create(TextWriter) Creates a new XmlWriter instance using the specified TextWriter.
Public method Static member Supported by Silverlight for Windows Phone Supported by Xbox 360 Create(XmlWriter) Creates a new XmlWriter instance using the specified XmlWriter object.
Public method Static member Supported by Silverlight for Windows Phone Supported by Xbox 360 Create(Stream, XmlWriterSettings) Creates a new XmlWriter instance using the stream and XmlWriterSettings object.
Public method Static member Supported by Silverlight for Windows Phone Supported by Xbox 360 Create(StringBuilder, XmlWriterSettings) Creates a new XmlWriter instance using the StringBuilder and XmlWriterSettings objects.
Public method Static member Supported by Silverlight for Windows Phone Supported by Xbox 360 Create(TextWriter, XmlWriterSettings) Creates a new XmlWriter instance using the TextWriter and XmlWriterSettings objects.
Public method Static member Supported by Silverlight for Windows Phone Supported by Xbox 360 Create(XmlWriter, XmlWriterSettings) Creates a new XmlWriter instance using the specified XmlWriter and XmlWriterSettings objects.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Dispose()
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 Dispose(Boolean) Releases the unmanaged resources used by the XmlWriter and optionally releases the managed resources.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 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.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 Flush When overridden in a derived class, flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 GetType Gets the Type of the current instance. (Inherited from Object.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 LookupPrefix When overridden in a derived class, returns the closest prefix defined in the current namespace scope for the namespace URI.
Protected method Supported by Silverlight for Windows Phone Supported by Xbox 360 MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 ToString Returns a string that represents the current object. (Inherited from Object.)
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteAttributes When overridden in a derived class, writes out all the attributes found at the current position in the XmlReader.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteAttributeString(String, String) When overridden in a derived class, writes out the attribute with the specified local name and value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteAttributeString(String, String, String) When overridden in a derived class, writes an attribute with the specified local name, namespace URI, and value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 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.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteBase64 When overridden in a derived class, encodes the specified binary bytes as Base64 and writes out the resulting text.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteBinHex When overridden in a derived class, encodes the specified binary bytes as BinHex and writes out the resulting text.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteCData When overridden in a derived class, writes out a <![CDATA[...]]> block containing the specified text.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteCharEntity When overridden in a derived class, forces the generation of a character entity for the specified Unicode character value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteChars When overridden in a derived class, writes text one buffer at a time.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteComment When overridden in a derived class, writes out a comment <!--...--> containing the specified text.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteDocType When overridden in a derived class, writes the DOCTYPE declaration with the specified name and optional attributes.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteElementString(String, String) When overridden in a derived class, writes an element with the specified local name and value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteElementString(String, String, String) When overridden in a derived class, writes an element with the specified local name, namespace URI, and value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteElementString(String, String, String, String) Writes an element with the specified local name, namespace URI, and value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteEndAttribute When overridden in a derived class, closes the previous WriteStartAttribute call.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteEndDocument When overridden in a derived class, closes any open elements or attributes and puts the writer back in the Start state.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteEndElement When overridden in a derived class, closes one element and pops the corresponding namespace scope.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteEntityRef When overridden in a derived class, writes out an entity reference as &name;.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteFullEndElement When overridden in a derived class, closes one element and pops the corresponding namespace scope.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 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).
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 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).
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 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.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteProcessingInstruction When overridden in a derived class, writes out a processing instruction with a space between the name and text as follows: <?name text?>.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 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.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteRaw(String) When overridden in a derived class, writes raw markup manually from a string.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteRaw(Char[], Int32, Int32) When overridden in a derived class, writes raw markup manually from a character buffer.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteStartAttribute(String) Writes the start of an attribute with the specified local name.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteStartAttribute(String, String) Writes the start of an attribute with the specified local name and namespace URI.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 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.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteStartDocument() When overridden in a derived class, writes the XML declaration with the version "1.0".
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteStartDocument(Boolean) When overridden in a derived class, writes the XML declaration with the version "1.0" and the standalone attribute.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteStartElement(String) When overridden in a derived class, writes out a start tag with the specified local name.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteStartElement(String, String) When overridden in a derived class, writes the specified start tag and associates it with the given namespace.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteStartElement(String, String, String) When overridden in a derived class, writes the specified start tag and associates it with the given namespace and prefix.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteString When overridden in a derived class, writes the given text content.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteSurrogateCharEntity When overridden in a derived class, generates and writes the surrogate character entity for the surrogate character pair.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteValue(Boolean) Writes a Boolean value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteValue(DateTime) Writes a DateTime value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteValue(Decimal) Writes a Decimal value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteValue(Double) Writes a Double value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteValue(Int32) Writes a Int32 value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteValue(Int64) Writes a Int64 value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteValue(Object) Writes the object value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteValue(Single) Writes a single-precision floating-point number.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteValue(String) Writes a String value.
Public method Supported by Silverlight for Windows Phone Supported by Xbox 360 WriteWhitespace When overridden in a derived class, writes out the given white space.
Top

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

Note 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.

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


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();


Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Empty Xml with attributes
You may also want to check if the xml tag is empty but contains attributes (eg. <student name="bob" />.
You will need to check if the xml node is a empty node before you start reading the attributes and you can't close it till you've added the attributes in so something like this will work.

case XmlNodeType.Element:
    writer.WriteStartElement(reader.Name);
    bool is_empty = false;
    if(reader.IsEmptyElement){
        is_empty = true;
    }
    if(reader.HasAttributes){
        while(reader.MoveToNextAttribute()){
            writer.WriteAttributeString(reader.Name, reader.Value);
        }
    }
    if(is_empty){
        writer.WriteEndElement();
    }
    break;
How to output attributes with each element

The example code above does not demonstrate how to include attributes found in each element.

To include attributes with each element, replace the element case with the following...

Case XmlNodeType.Element
writer.WriteStartElement(reader.Name)
   If reader.HasAttributes Then
While reader.MoveToNextAttribute()
writer.WriteAttributeString(reader.Name, reader.Value)
End While
End If