Language

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

定義

派生クラスでオーバーライドされると、名前とテキストの間にスペースを入れた処理命令を次のように書き込みます: <?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

処理命令の名前。

text
String

処理命令に含めるテキスト。

例外

テキストは、整形式でない XML ドキュメントになります。

name は null または String.Emptyです。

このメソッドは、 WriteStartDocument() が既に呼び出された後に XML 宣言を作成するために使用されています。

前の非同期操作が完了する前に、 XmlWriter メソッドが呼び出されました。 この場合、"非同期操作は既に進行中です" というメッセージで InvalidOperationException がスローされます。

例

次の例では、書籍を表す XML ファイルを書き込みます。

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

注釈

このメソッドは、( WriteStartDocumentではなく) XML 宣言を記述するために使用できます。 これにより、エンコード属性が誤って書き込まれる可能性があります。 たとえば、次の C# コードでは、既定のエンコードが UTF-8 であるため、XML ドキュメントが無効になります。

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?>など) を書き込みます。

テキストに "?>" の無効なシーケンスが含まれている場合、 XmlWriter は ArgumentException (XmlTextWriter オブジェクト) をスローするか、スペース "? >" は、無効な XML (XmlWriterCreate メソッドによって作成されたオブジェクト) を書き込むのを防ぐためです。

このメソッドの非同期バージョンについては、 WriteProcessingInstructionAsyncを参照してください。

適用対象