Поделиться через


XmlWriter.Close Method

Microsoft Silverlight will reach end of support after October 2021. Learn more.

When overridden in a derived class, closes this stream and the underlying stream.

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

Syntax

'Declaration
Public Overridable Sub Close
public virtual void Close()

Exceptions

Exception Condition
InvalidOperationException

A call is made to write more output after Close has been called or the result of this call is an invalid XML document.

Remarks

Any elements or attributes left open are automatically closed.

NoteNote:

When you use the XmlWriter methods to output XML, the elements and attributes will not be written until you call the Close method.

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

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

Platforms

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