XmlWriter.WriteAttributes(XmlReader, Boolean) XmlWriter.WriteAttributes(XmlReader, Boolean) XmlWriter.WriteAttributes(XmlReader, Boolean) XmlWriter.WriteAttributes(XmlReader, Boolean) Method

정의

파생 클래스에서 재정의되면 XmlReader의 현재 위치에 있는 모든 특성을 작성합니다.When overridden in a derived class, writes out all the attributes found at the current position in the XmlReader.

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

매개 변수

reader
XmlReader XmlReader XmlReader XmlReader

특성을 복사할 원본 XmlReader입니다.The XmlReader from which to copy the attributes.

defattr
Boolean Boolean Boolean Boolean

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

예외

판독기가 element, attribute 또는 XmlDeclaration 노드에 배치되지 않은 경우The reader is not positioned on an element, attribute or XmlDeclaration node.

이전 비동기 작업이 완료되기 전에 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 copies all the elements to the output, changes the tag names to upper case, and copies all the attributes unchanged.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
void main()
{
   XmlReader^ reader = XmlReader::Create( L"test1.xml" );
   XmlWriterSettings^ settings = gcnew XmlWriterSettings;
   settings->Indent = true;
   XmlWriter^ writer = XmlWriter::Create( Console::Out );
   while ( reader->Read() )
   {
      if ( reader->NodeType == XmlNodeType::Element )
      {
         writer->WriteStartElement( reader->Name->ToUpper() );
         writer->WriteAttributes( reader, false );
         if ( reader->IsEmptyElement )
                  writer->WriteEndElement();
      }
      else
      if ( reader->NodeType == XmlNodeType::EndElement )
      {
         writer->WriteEndElement();
      }
   }

   writer->Close();
   reader->Close();
}
using System;
using System.IO;
using System.Xml;

public class Sample {

  public static void Main() {
 
    XmlReader reader = XmlReader.Create("test1.xml");
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;
    XmlWriter writer = XmlWriter.Create(Console.Out);

    while (reader.Read()) {
      if (reader.NodeType == XmlNodeType.Element) {
        writer.WriteStartElement(reader.Name.ToUpper());
        writer.WriteAttributes(reader, false);
        if (reader.IsEmptyElement) writer.WriteEndElement();
      }
      else if (reader.NodeType == XmlNodeType.EndElement) {
        writer.WriteEndElement();
      }
    }
    writer.Close();
    reader.Close();
  }
}
Option Strict
Option Explicit

Imports System
Imports System.IO
Imports System.Xml

Public Class Sample
    
  Public Shared Sub Main()

    Dim reader As XmlReader = XmlReader.Create("test1.xml")
    Dim settings As XmlWriterSettings = new XmlWriterSettings()
    settings.Indent = true
    Dim writer As XmlWriter = XmlWriter.Create(Console.Out)
        
      While reader.Read()
          If reader.NodeType = XmlNodeType.Element Then
              writer.WriteStartElement(reader.Name.ToUpper())
              writer.WriteAttributes(reader, False)
              If reader.IsEmptyElement Then
                 writer.WriteEndElement()
              End If
          Else
              If reader.NodeType = XmlNodeType.EndElement Then
                  writer.WriteEndElement()
              End If
          End If
      End While
      writer.Close()
      reader.Close()

    End Sub 'Main
End Class 'Sample

이 예제에서는 파일을 사용 하 여 test1.xml입력으로 합니다.The example uses the file, test1.xml, as input.

<test a="1" b="2">
    <item c="3" d="4" e="5" f="6"/>
</test>

설명

판독기가 위치에 element 노드 WriteAttributes 포함 된 모든 특성을 복사 합니다.If the reader is positioned on an element node WriteAttributes copies all the contained attributes. 판독기가 위치에 attribute 노드를이 메서드는 현재 특성을 다음 나머지 특성 작성을 작성 요소의 닫는 태그입니다.If the reader is positioned on an attribute node, this method writes the current attribute, then the rest of the attributes until the element closing tag. 판독기가 위치에 XmlDeclaration 노드를이 메서드는 선언에서 모든 특성을 작성 합니다.If the reader is positioned on an XmlDeclaration node, this method writes all the attributes in the declaration. 이 메서드에서 throw 하는 다른 노드 형식에 판독기가 배치 하는 경우는 XmlException합니다.If the reader is positioned on any other node type this method throws an XmlException.

이 메서드를 사용 하 여 호출 하면 XmlValidatingReader을 작성 하는 경우 모든 콘텐츠 (엔터티에서 확장 되었습니다) 문서가 잘못 될 수 있는 교체 하는 올바른 형식의 XML을 확인 해야 합니다.If this method is called using XmlValidatingReader, to ensure well-formed XML any content (which has been expanded from the entities) that could result in an invalid document is replaced when written. 예를 들어, 특성에는 &gt; 엔터티는 확장 된, 잘 구성 된 문서를 확장 하도록 >는 사용 하 여 작성 하는 경우 대체 &gt;합니다.For example, if an attribute includes an &gt; entity that has been expanded, to ensure a well-formed document the expanded > is replaced when written out with &gt;.

이 메서드의 비동기 버전을 참조 하세요. WriteAttributesAsync합니다.For the asynchronous version of this method, see WriteAttributesAsync.

적용 대상