XmlWriter.WriteAttributes(XmlReader, Boolean) Метод

Определение

При переопределении в производном классе записывает все атрибуты, найденные в текущей позиции в объекте 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 с сообщением "Асинхронная операция уже выполняется".

Примеры

Следующий пример копирует все элементы в выходные данные, изменяет имена тегов в верхний регистр и копирует все атрибуты без изменений.

#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>

Комментарии

Если средство чтения размещается на element узле WriteAttributes , копирует все содержащиеся атрибуты. Если средство чтения размещено на узле, этот метод записывает текущий attribute атрибут, остальные атрибуты не будут закрывать тег элемента. Если средство чтения размещено на XmlDeclaration узле, этот метод записывает все атрибуты в объявлении. Если средство чтения размещено на любом другом типе узла, этот метод вызывает XmlExceptionисключение .

Если этот метод вызывается с помощью , XmlValidatingReaderдля обеспечения правильно сформированного XML-содержимого (развернутого из сущностей), что может привести к замене недопустимого документа при написании. Например, если атрибут содержит развернутую &gt; сущность, чтобы обеспечить правильно сформированный документ, развернутый > заменяется при написании на &gt;.

Асинхронная версия этого метода см. в разделе WriteAttributesAsync.

Применяется к