Sdílet prostřednictvím


XmlWriter.WriteAttributes(XmlReader, Boolean) Metoda

Definice

Při přepsání v odvozené třídě zapíše všechny atributy nalezené na aktuální pozici v 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)

Parametry

reader
XmlReader

Z XmlReader něhož chcete zkopírovat atributy.

defattr
Boolean

true pro zkopírování výchozích atributů z ; XmlReaderjinak , false.

Výjimky

reader je null.

Čtečka není umístěná na uzlu nebo XmlDeclaration na attribute elementuzlu.

XmlWriter Před dokončením předchozí asynchronní operace byla volána metoda. V tomto případě InvalidOperationException je vyvolán zpráva "Asynchronní operace již probíhá".

Příklady

Následující příklad zkopíruje všechny prvky do výstupu, změní názvy značek na velká a zkopíruje všechny atributy beze změny.

#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

Příklad používá soubor , test1.xmljako vstup.

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

Poznámky

Pokud je čtečka umístěna na element uzlu WriteAttributes zkopíruje všechny obsažené atributy. Pokud je čtečka umístěna na attribute uzlu, tato metoda zapíše aktuální atribut, zbytek atributů až do uzavření elementu značky. Pokud je čtenář umístěn na XmlDeclaration uzlu, tato metoda zapíše všechny atributy v deklaraci. Pokud je čtečka umístěna na jakýkoli jiný typ uzlu, tato metoda vyvolá XmlException.

Pokud je tato metoda volána pomocí XmlValidatingReader, k zajištění dobře formátovaného XML libovolného obsahu (který byl rozbalený z entit), který by mohl vést k neplatnému dokumentu je nahrazen při zápisu. Pokud například atribut obsahuje entitu &gt; , která byla rozšířena, aby byl zajištěn dobře formátovaný dokument rozbalený > se při zápisu &gt;nahradí .

Asynchronní verze této metody naleznete v tématu WriteAttributesAsync.

Platí pro