XmlWriter.WriteNode XmlWriter.WriteNode XmlWriter.WriteNode XmlWriter.WriteNode Method

定義

ソース オブジェクトから現在のライターのインスタンスにすべてをコピーします。Copies everything from the source object to the current writer instance.

オーバーロード

WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean)

派生クラスでオーバーライドされると、リーダーのデータをすべてライターにコピーし、リーダーを次の兄弟の開始位置に移動します。When overridden in a derived class, copies everything from the reader to the writer and moves the reader to the start of the next sibling.

WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean)

XPathNavigator オブジェクトからライターにすべてをコピーします。Copies everything from the XPathNavigator object to the writer. XPathNavigator の位置は変更されません。The position of the XPathNavigator remains unchanged.

注釈

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

WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean)

派生クラスでオーバーライドされると、リーダーのデータをすべてライターにコピーし、リーダーを次の兄弟の開始位置に移動します。When overridden in a derived class, copies everything from the reader to the writer and moves the reader to the start of the next sibling.

public:
 virtual void WriteNode(System::Xml::XmlReader ^ reader, bool defattr);
public virtual void WriteNode (System.Xml.XmlReader reader, bool defattr);
abstract member WriteNode : System.Xml.XmlReader * bool -> unit
override this.WriteNode : System.Xml.XmlReader * bool -> unit
Public Overridable Sub WriteNode (reader As XmlReader, defattr As Boolean)

パラメーター

reader
XmlReader XmlReader XmlReader XmlReader

読み取り元の XmlReaderThe XmlReader to read from.

defattr
Boolean Boolean Boolean Boolean

XmlReader の既定の属性をコピーする場合は true。それ以外の場合は falsetrue to copy the default attributes from the XmlReader; otherwise, false.

例外

reader に無効な文字が含まれています。reader contains invalid characters.

先行の非同期操作が完了する前に、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."

次の例では、最初と最後の book ノードをコンソールに書き込みます。The following example writes the first and last book nodes out to the console.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   XmlTextReader^ reader = gcnew XmlTextReader( "books.xml" );
   reader->WhitespaceHandling = WhitespaceHandling::None;
   
   // Move the reader to the first book element.
   reader->MoveToContent();
   reader->Read();
   
   // Create a writer that outputs to the console.
   XmlTextWriter^ writer = gcnew XmlTextWriter( Console::Out );
   writer->Formatting = Formatting::Indented;
   
   // Write the start tag.
   writer->WriteStartElement( "myBooks" );
   
   // Write the first book.
   writer->WriteNode( reader, false );
   
   // Skip the second book.
   reader->Skip();
   
   // Write the last book.
   writer->WriteNode( reader, false );
   writer->WriteEndElement();
   
   // Close the writer and the reader.
   writer->Close();
   reader->Close();
}

using System;
using System.IO;
using System.Xml;

public class Sample{

  public static void Main(){

    XmlTextReader reader = new XmlTextReader("books.xml");
    reader.WhitespaceHandling = WhitespaceHandling.None;

    //Move the reader to the first book element.
    reader.MoveToContent();
    reader.Read();

    //Create a writer that outputs to the console.
    XmlTextWriter writer = new XmlTextWriter (Console.Out);
    writer.Formatting = Formatting.Indented;
    
    //Write the start tag.
    writer.WriteStartElement("myBooks");

    //Write the first book.
    writer.WriteNode(reader, false);

    //Skip the second book.
    reader.Skip();

    //Write the last book.
    writer.WriteNode(reader, false);
    writer.WriteEndElement();

    //Close the writer and the reader.
    writer.Close();
    reader.Close();

  }
}
Imports System.IO
Imports System.Xml

public class Sample

  public shared sub Main()

    Dim reader as XmlTextReader = new XmlTextReader("books.xml")
    reader.WhitespaceHandling = WhitespaceHandling.None

    'Move the reader to the first book element.
    reader.MoveToContent()
    reader.Read()

    'Create a writer that outputs to the console.
    Dim writer as XmlTextWriter = new XmlTextWriter (Console.Out)
    writer.Formatting = Formatting.Indented
    
    'Write the start tag.
    writer.WriteStartElement("myBooks")

    'Write the first book.
    writer.WriteNode(reader, false)

    'Skip the second book.
    reader.Skip()

    'Write the last book.
    writer.WriteNode(reader, false)
    writer.WriteEndElement()

    'Close the writer and the reader.
    writer.Close()
    reader.Close()

  end sub
end class

この例では、ファイルbooks.xmlを入力として使用します。The example uses the file, books.xml, as input.

<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

注釈

次の表は、このメソッドでサポートされているノードの種類を示しています。The following table shows the supported node types for this method.

ノード型NodeType WriteNode 動作WriteNode Behavior
None 型に関係なく、すべてのノードを書き込みます。Writes out all the nodes irrespective of type. つまり、ライター XmlReaderはを使用し、属性、処理命令、コメントなど、読み取られたすべてのノードを書き込みます。That is, the writer consumes the XmlReader and writes out all the nodes read including attributes, processing instructions, comments, and so on.

この状況は、 XmlReaderが初期状態の場合に発生します。This situation occurs when the XmlReader is in an initial state. (プロパティXmlReader.ReadStateはをReaderState.Initial返します)。(The XmlReader.ReadState property returns ReaderState.Initial).
Element 要素ノードとすべての属性ノードを書き込みます。Writes out the element node and any attribute nodes.
Attribute 何も実行しません。No operation. 代わりに、WriteStartAttribute タグまたは WriteAttributeString タグを使用してください。Use WriteStartAttribute or WriteAttributeString instead.
Text テキスト ノードを書き出します。Writes out the text node.
CDATA CDATA セクション ノードを書き出します。Writes out the CDATA section node.
EntityReference エンティティ参照ノードを書き込みます。Writes out the entity reference node.
ProcessingInstruction 処理命令ノードを書き込みます。Writes out the processing instruction node.
Comment コメントノードを書き込みます。Writes out the comment node.
DocumentType ドキュメント型ノードを書き込みます。Writes out the document type node.
SignificantWhitespace 有意の空白ノードを書き込みます。Writes out the significant white space node.
Whitespace 空白ノードを書き込みます。Writes out the white space node.
EndElement 終了要素タグを書き込みます。Writes out the end element tag.
EndEntity 何も実行しません。No operation.
XmlDeclaration XML 宣言ノードを書き込みます。Writes out the XML declaration node.

リーダーが初期状態の場合、このメソッドはリーダーをファイルの末尾に移動します。If the reader is in the initial state, this method moves the reader to the end of file. リーダーが既にファイルの末尾または closed 状態の場合、このメソッドは操作不可能です。If the reader is already at the end of file or in a closed state, this method is non-operational.

次C#のコードでは、XML 入力ドキュメント全体をコンソールにコピーします。The following C# code copies an entire XML input document to the console:

XmlReader reader = XmlReader.Create(myfile);  
XmlWriter writer = XmlWriter.Create(Console.Out);  
writer.WriteNode(reader, false);  

ルートノードから移動し、ドキュメント内の他の場所に配置した場合C# 、次の例ではノードが正しく書き込まれます。If you have moved off the root node and are positioned elsewhere in the document the following C# example correctly writes out the nodes.

XmlReader reader = XmlReader.Create(myfile);  
reader.Read(); // Read PI  
reader.Read(); // Read Comment  
reader.Read(); // Read DOCType  
XmlWriter writer = XmlWriter.Create(Console.Out);  
while (!reader.EOF){  
  writer.WriteNode(reader, false);  
 }  

リーダーが空白を返すように構成されていて、ライターが出力をインデントWriteNodeするように構成されている場合、は奇妙な出力を生成することがあります。If the reader is configured to return white space and the writer has is configured to indent output, WriteNode may produce strange output. 基本的には、2つの書式設定が取得されます。You will essentially be getting double formatting.

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

WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean)

XPathNavigator オブジェクトからライターにすべてをコピーします。Copies everything from the XPathNavigator object to the writer. XPathNavigator の位置は変更されません。The position of the XPathNavigator remains unchanged.

public:
 virtual void WriteNode(System::Xml::XPath::XPathNavigator ^ navigator, bool defattr);
public virtual void WriteNode (System.Xml.XPath.XPathNavigator navigator, bool defattr);
abstract member WriteNode : System.Xml.XPath.XPathNavigator * bool -> unit
override this.WriteNode : System.Xml.XPath.XPathNavigator * bool -> unit
Public Overridable Sub WriteNode (navigator As XPathNavigator, defattr As Boolean)

パラメーター

defattr
Boolean Boolean Boolean Boolean

既定の属性をコピーする場合は true。それ以外の場合は falsetrue to copy the default attributes; otherwise, false.

例外

先行の非同期操作が完了する前に、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."

次の例ではWriteNode 、メソッドを使用して、ドキュメントから最初の book ノードをコピーし、それをコンソールに書き込みます。The following example uses the WriteNode method to copy the first book node from a document and write it to the console.

using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;

public class Sample
{

    public static void Main()
    {

        XPathDocument doc = new XPathDocument("books.xml");
        XPathNavigator nav = doc.CreateNavigator();

        // Create a writer that outputs to the console.
        XmlWriter writer = XmlWriter.Create(Console.Out);

        // Write the start tag.
        writer.WriteStartElement("myBooks");

        // Write the first book.
        nav.MoveToChild("bookstore", "");
        nav.MoveToChild("book", "");
        writer.WriteNode(nav, false);

        // Close the start tag.
        writer.WriteEndElement();

        // Close the writer.
        writer.Close();

    }
}
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath

Module Module1

    Sub Main()

        Dim doc As XPathDocument = New XPathDocument("books.xml")
        Dim nav As XPathNavigator = doc.CreateNavigator()

        ' Create a writer that outputs to the console.
        Dim writer As XmlWriter = XmlWriter.Create(Console.Out)

        ' Write the start tag.
        writer.WriteStartElement("myBooks")

        ' Write the first book.
        nav.MoveToChild("bookstore", "")
        nav.MoveToChild("book", "")
        writer.WriteNode(nav, False)

        ' Close the start tag.
        writer.WriteEndElement()

        ' Close the writer.
        writer.Close()

    End Sub
End Module

この例では、books.xml ファイルを入力として使用します。The example uses the books.xml file as input.

<?xml version="1.0" encoding="utf-8" ?> 
<bookstore>
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

注釈

次の表は、このXPathメソッドでサポートされているノードの種類を示しています。The following table shows the supported XPath node types for this method.

XPathNodeTypeXPathNodeType WriteNode 動作WriteNode Behavior
Root 型に関係なく、すべてのノードを書き込みます。Writes out all the nodes irrespective of type. つまり、ライター XPathNavigatorはを使用し、ルートノードからすべてのノード (属性、処理命令、コメントなど) を書き込みます。That is, the writer consumes the XPathNavigator and writes out all the nodes from the root node (including attributes, processing instructions, comments and so on.)
Element 要素ノードとすべての属性ノードを書き込みます。Writes out the element node and any attribute nodes.
Attribute 何も実行しません。No operation. 代わりに、WriteStartAttribute タグまたは WriteAttributeString タグを使用してください。Use WriteStartAttribute or WriteAttributeString instead.
Text テキスト ノードを書き出します。Writes out the text node.
Namespace 何も実行しません。No operation. 名前空間WriteStartAttribute宣言WriteAttributeStringを記述するには、メソッドまたはメソッドを使用します。Use the WriteStartAttribute or WriteAttributeString method to write the namespace declaration.
ProcessingInstruction 処理命令ノードを書き込みます。Writes out the processing instruction node.
Comment コメントノードを書き込みます。Writes out the comment node.
SignificantWhitespace 有意の空白ノードを書き込みます。Writes out the significant white space node.
Whitespace 空白ノードを書き込みます。Writes out the white space node.

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

適用対象