XmlWriter.WriteAttributes(XmlReader, Boolean) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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 ; XmlReader
jinak , false
.
Výjimky
reader
je null
.
Čtečka není umístěná na uzlu nebo XmlDeclaration
na attribute
element
uzlu.
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.xml
jako 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 >
, která byla rozšířena, aby byl zajištěn dobře formátovaný dokument rozbalený > se při zápisu >
nahradí .
Asynchronní verze této metody naleznete v tématu WriteAttributesAsync.