XmlWriter.WriteAttributes(XmlReader, Boolean) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파생 클래스에서 재정의되면 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
입니다.
- defattr
- Boolean
true
에서 기본 특성을 복사하려면 XmlReader
이고, 그렇지 않으면 false
입니다.
예외
reader
이(가) null
인 경우
판독기가 element
, attribute
또는 XmlDeclaration
노드에 배치되지 않은 경우
이전 비동기 작업이 완료되기 전에 XmlWriter 메서드가 호출되었습니다. 이 경우 “비동기 작업이 이미 진행 중입니다.” 메시지를 나타내며 InvalidOperationException이 throw됩니다.
예제
다음 예제에서는 모든 요소를 출력에 복사하고, 태그 이름을 대문자로 변경하고, 변경되지 않은 모든 특성을 복사합니다.
#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.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
End Class
이 예제에서는 파일을 test1.xml
입력으로 사용합니다.
<test a="1" b="2">
<item c="3" d="4" e="5" f="6"/>
</test>
설명
판독기를 노드 WriteAttributes
에 element
배치하면 포함된 모든 특성이 복사됩니다. 판독기를 노드에 attribute
배치하는 경우 이 메서드는 현재 특성을 쓰고 나머지 특성은 요소 닫는 태그까지 씁니다. 판독기를 노드에 XmlDeclaration
배치하는 경우 이 메서드는 선언의 모든 특성을 씁니다. 판독기를 다른 노드 형식에 배치하면 이 메서드가 throw됩니다 XmlException.
이 메서드를 사용하여 XmlValidatingReader호출하는 경우 올바른 형식의 XML을 확인하여 문서 작성 시 잘못된 문서가 발생할 수 있는 모든 콘텐츠(엔터티에서 확장됨)를 바꿉니다. 예를 들어 특성에 확장된 엔터티가 포함된 >
경우 잘 구성된 문서를 작성할 때 >
확장된 > 바뀝니다.
이 메서드의 비동기 버전은 다음을 참조하세요 WriteAttributesAsync.