XmlWriter.WriteProcessingInstruction(String, String) メソッド

定義

派生クラスでオーバーライドされると、名前とテキストの間にスペースがある処理命令を、次のように非同期的に書き込みます: <?name text?>。When overridden in a derived class, writes out a processing instruction with a space between the name and text as follows: <?name text?>.

public:
 abstract void WriteProcessingInstruction(System::String ^ name, System::String ^ text);
public abstract void WriteProcessingInstruction (string name, string text);
public abstract void WriteProcessingInstruction (string name, string? text);
abstract member WriteProcessingInstruction : string * string -> unit
Public MustOverride Sub WriteProcessingInstruction (name As String, text As String)

パラメーター

name
String

処理命令の名前。The name of the processing instruction.

text
String

処理命令に含めるテキスト。The text to include in the processing instruction.

例外

テキストは、非整形式の XML ドキュメントになります。The text would result in a non-well formed XML document.

namenull または String.Empty です。name is either null or String.Empty.

このメソッドは、WriteStartDocument() が呼び出された後に XML 宣言を作成するために使用されています。This method is being used to create an XML declaration after WriteStartDocument() has already been called.

先行の非同期操作が完了する前に、XmlWriter メソッドが呼び出されました。An XmlWriter method was called before a previous asynchronous operation finished. この場合、「非同期操作が既に実行されています」というメッセージと共に InvalidOperationException がスローされます。In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

次の例では、書籍を表す XML ファイルを書き込みます。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();
  }
}
Option Strict
Option Explicit

Imports System.IO
Imports System.Xml

Public Class Sample
    Private Const filename As String = "sampledata.xml"
    
  Public Shared Sub Main()

     Dim settings As XmlWriterSettings = new XmlWriterSettings()
     settings.Indent = true
     Dim writer As XmlWriter = XmlWriter.Create(filename, settings)
        
     ' Write the Processing Instruction node.
     Dim PItext As String = "type=""text/xsl"" href=""book.xsl"""
     writer.WriteProcessingInstruction("xml-stylesheet", PItext)
        
     'Write the DocumentType node.
     writer.WriteDocType("book", Nothing, Nothing, "<!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()
        
    End Sub
End Class

注釈

このメソッドは、(ではなく) XML 宣言を書き込むために使用でき WriteStartDocument ます。This method can be used to write the XML declaration (rather than WriteStartDocument). これにより、エンコード属性が誤って書き込まれる可能性があります。This could result in the encoding attribute being incorrectly written. たとえば、次の C# コードでは、既定のエンコードが UTF-8 であるため、無効な XML ドキュメントが生成されます。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();  

textがまたはのいずれかの場合 null String.Empty 、このメソッドは ProcessingInstruction データコンテンツのないを書き込みます。たとえば、のように <?name?> なります。If text is either null or String.Empty, this method writes a ProcessingInstruction with no data content, for example <?name?>.

テキストに "? >" の無効なシーケンスが含まれている場合、は XmlWriter (オブジェクト) をスローするか、 ArgumentException 空白文字 XmlTextWriter を挿入できますか?If text contains an invalid sequence of "?>", the XmlWriter can either throw an ArgumentException (XmlTextWriter objects) or insert a space "? 無効な XML ( XmlWriter メソッドによって作成されたオブジェクト) が書き込まれないようにするには、> Create ます。>" to avoid writing invalid XML (XmlWriter objects created by the Create method).

このメソッドの非同期バージョンについては、「」を参照してください WriteProcessingInstructionAsyncFor the asynchronous version of this method, see WriteProcessingInstructionAsync.

適用対象