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 objektu 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
Ze XmlReader kterého chcete zkopírovat atributy.
- defattr
- Boolean
true chcete-li zkopírovat výchozí atributy z objektu XmlReader; v opačném případě false.
Výjimky
reader je null.
Čtečka není umístěna na elementattribute uzlu nebo XmlDeclaration na uzlu.
Před XmlWriter dokončením předchozí asynchronní operace byla volána metoda. V tomto případě InvalidOperationException je vyvolán zpráva "Asynchronní operace už 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á písmena a zkopíruje všechny atributy beze změny.
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 čtenář umístěn 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ů, dokud prvek uzavírá značku. 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 rozšířen z entit), které by mohly vést k neplatnému dokumentu je nahrazen při zápisu. Pokud například atribut obsahuje entitu > , která byla rozšířena, aby se zajistilo, že se rozbalený > dokument nahradí při zápisu s >.
Asynchronní verzi této metody naleznete v tématu WriteAttributesAsync.