XmlWriter.WriteAttributes(XmlReader, Boolean) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
När du åsidosättas i en härledd klass skriver du ut alla attribut som finns på den aktuella positionen i 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)
Parametrar
- reader
- XmlReader
Från XmlReader vilken attributen ska kopieras.
- defattr
- Boolean
trueför att kopiera standardattributen XmlReaderfrån ; annars . false
Undantag
reader är null.
Läsaren är inte placerad på en element, attribute eller XmlDeclaration nod.
En XmlWriter metod anropades innan en tidigare asynkron åtgärd slutfördes. I det här fallet InvalidOperationException genereras meddelandet "En asynkron åtgärd pågår redan".
Exempel
I följande exempel kopieras alla element till utdata, taggnamnen ändras till versaler och alla attribut kopieras oförändrade.
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
I exemplet används filen , test1.xmlsom indata.
<test a="1" b="2">
<item c="3" d="4" e="5" f="6"/>
</test>
Kommentarer
Om läsaren är placerad på en element nod WriteAttributes kopieras alla inneslutna attribut. Om läsaren är placerad på en attribute nod skriver den här metoden det aktuella attributet och resten av attributen tills elementet stänger taggen. Om läsaren är placerad på en XmlDeclaration nod skriver den här metoden alla attribut i deklarationen. Om läsaren är placerad på någon annan nodtyp genererar den här metoden en XmlException.
Om den här metoden anropas med , XmlValidatingReaderför att säkerställa välformulerad XML ersätts allt innehåll (som har expanderats från entiteterna) som kan leda till att ett ogiltigt dokument ersätts när det skrivs. Om ett attribut till exempel innehåller en entitet > som har expanderats, för att säkerställa att ett välformulerat dokument ersätts det expanderade > när det skrivs ut med >.
Den asynkrona versionen av den här metoden finns i WriteAttributesAsync.