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)
Parameters
- name
- Type: System.String
The name of the processing instruction.
- text
- Type: System.String
The text to include in the processing instruction.
| Exception | Condition |
|---|---|
| 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. |
| InvalidOperationException | An XmlWriter method was called before a previous asynchronous operation finished. In this case, InvalidOperationException is thrown with the message “An asynchronous operation is already in progress.” |
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 (XmlTextWriter objects) or insert a space "? >" to avoid writing invalid XML (XmlWriter objects created by the Create method).
For the asynchronous version of this method, see WriteProcessingInstructionAsync.
The following example writes an XML file representing a book.
using System; using System.IO; using System.Xml; public class Sample { private const string filename = "sampledata.xml"; public static void Main() { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; XmlWriter writer = XmlWriter.Create(filename, settings); // Write the Processing Instruction node. String PItext="type=\"text/xsl\" href=\"book.xsl\""; writer.WriteProcessingInstruction("xml-stylesheet", PItext); // Write the DocumentType node. writer.WriteDocType("book", null , null, "<!ENTITY h \"hardcover\">"); // Write a Comment node. writer.WriteComment("sample XML"); // Write the root element. writer.WriteStartElement("book"); // Write the genre attribute. writer.WriteAttributeString("genre", "novel"); // Write the ISBN attribute. writer.WriteAttributeString("ISBN", "1-8630-014"); // Write the title. writer.WriteElementString("title", "The Handmaid's Tale"); // Write the style element. writer.WriteStartElement("style"); writer.WriteEntityRef("h"); writer.WriteEndElement(); // Write the price. writer.WriteElementString("price", "19.95"); // Write CDATA. writer.WriteCData("Prices 15% off!!"); // Write the close tag for the root element. writer.WriteEndElement(); writer.WriteEndDocument(); // Write the XML to file and close the writer. writer.Flush(); writer.Close(); } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.