Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

XmlWriter.WriteProcessingInstruction Method

When overridden in a derived class, writes out a processing instruction with a space between the name and text as follows: <?name text?>.

Namespace:  System.Xml
Assembly:  System.Xml (in System.Xml.dll)
public abstract void WriteProcessingInstruction(
	string name,
	string text
)

Parameters

name
Type: System.String
The name of the processing instruction.
text
Type: System.String
The text to include in the processing instruction.
ExceptionCondition
ArgumentException

The text would result in a non-well formed XML document.

name is either null or String.Empty.

This method is being used to create an XML declaration after WriteStartDocument has already been called.

This method can be used to write the XML declaration (rather than WriteStartDocument). This could result in the encoding attribute being incorrectly written. For example, the following C# code would result in an invalid XML document because the default encoding is UTF-8.

XmlWriter writer = XmlWriter.Create("output.xml");
writer.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-16'");
writer.WriteStartElement("root");
writer.Close();

If text is either null or String.Empty, this method writes a ProcessingInstruction with no data content, for example <?name?>.

If text contains an invalid sequence of "?>", the XmlWriter can either throw an ArgumentException or insert a space "? >" to avoid writing invalid XML (XmlWriter objects created by the Create method).

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.

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.