XmlWriter.WriteAttributes(XmlReader, Boolean) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wanneer deze worden overschreven in een afgeleide klasse, schrijft u alle kenmerken uit die op de huidige positie in de XmlReaderklasse zijn gevonden.
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)
Parameters
- reader
- XmlReader
De XmlReader waaruit de kenmerken moeten worden gekopieerd.
- defattr
- Boolean
trueom de standaardkenmerken te kopiƫren van de XmlReader; anders. false
Uitzonderingen
reader is null.
De lezer bevindt zich niet op een elementof attributeXmlDeclaration knooppunt.
Er XmlWriter is een methode aangeroepen voordat een vorige asynchrone bewerking is voltooid. In dit geval InvalidOperationException wordt het bericht 'Er wordt al een asynchrone bewerking uitgevoerd'.
Voorbeelden
In het volgende voorbeeld worden alle elementen gekopieerd naar de uitvoer, worden de tagnamen gewijzigd in hoofdletters en worden alle kenmerken ongewijzigd gekopieerd.
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
In het voorbeeld wordt het bestand als test1.xmlinvoer gebruikt.
<test a="1" b="2">
<item c="3" d="4" e="5" f="6"/>
</test>
Opmerkingen
Als de lezer op een element knooppunt WriteAttributes wordt weergegeven, worden alle ingesloten kenmerken gekopieerd. Als de lezer op een attribute knooppunt wordt weergegeven, schrijft deze methode het huidige kenmerk en vervolgens de rest van de kenmerken totdat de tag voor het sluiten van elementen wordt gesloten. Als de lezer op een XmlDeclaration knooppunt staat, schrijft deze methode alle kenmerken in de declaratie. Als de lezer op een ander knooppunttype staat, genereert deze methode een XmlException.
Als deze methode wordt aangeroepen met behulp XmlValidatingReadervan , om ervoor te zorgen dat goed opgemaakte XML-inhoud (die is uitgebreid van de entiteiten) die ertoe kunnen leiden dat een ongeldig document wordt vervangen wanneer het wordt geschreven. Als een kenmerk bijvoorbeeld een > entiteit bevat die is uitgevouwen, om ervoor te zorgen dat een goed gevormd document wordt vervangen wanneer deze > wordt weggeschreven door >.
Zie voor de asynchrone versie van deze methode WriteAttributesAsync.