.NET Framework Class Library for Silverlight
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)
Syntax

Visual Basic (Declaration)
Public MustInherit Class XmlWriter _
    Implements IDisposable
Visual Basic (Usage)
Dim instance As XmlWriter
C#
public abstract class XmlWriter : IDisposable
Remarks

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

NoteNote:

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.

Visual Basic
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()
C#
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();
Inheritance Hierarchy

System..::.Object
  System.Xml..::.XmlWriter
    System.Xml..::.XmlDictionaryWriter
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.
Platforms

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

See Also

Reference

Other Resources

Tags :


Community Content

CodeDreamer68
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
Tags :

Page view tracker