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

읽을 소스 XmlReader입니다.The XmlReader to read from.

defattr
Boolean Boolean Boolean Boolean

true에서 기본 특성을 복사하려면 XmlReader이고, 그렇지 않으면 false입니다.true 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이 throw됩니다.In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

예제

다음 예제에서는 콘솔에 첫 번째 및 마지막 책 노드를 씁니다.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
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. 이면 판독기 이미 닫힌된 상태 또는 파일의 끝에서이 메서드는 작동 하지.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. 기본적으로 발생 double 서식 지정 합니다.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)

매개 변수

navigator
XPathNavigator XPathNavigator XPathNavigator XPathNavigator

복사할 원본 XPathNavigator입니다.The XPathNavigator to copy from.

defattr
Boolean Boolean Boolean Boolean

기본 특성을 복사하려면 true이고, 그렇지 않으면 false입니다.true to copy the default attributes; otherwise, false.

예외

이전 비동기 작업이 완료되기 전에 XmlWriter 메서드가 호출되었습니다.An XmlWriter method was called before a previous asynchronous operation finished. 이 경우 “비동기 작업이 이미 진행 중입니다.” 메시지를 나타내며 InvalidOperationException이 throw됩니다.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
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.

적용 대상