Freigeben über


Verfassen von Attributen

Die Methoden WriteAttributeString, WriteStartAttribute und WriteAttributes wurden speziell für das Erstellen von Attributen entwickelt. Mit diesen Methoden können Sie Attribute für Elementknoten erstellen. Mit den Methoden zum Erstellen von Attributen können auch Namespacedeklarationen für ein Element erstellt werden. Weitere Informationen finden Sie unter Behandlung von Namespaces im "XmlWriter".

WriteAttributeString

Die WriteAttributeString-Methode ist die einfachste Möglichkeit zum Erstellen eines Attributs. Sie wird zum Verfassen eines vollständigen Attributknotens einschließlich eines Zeichenfolgenwerts verwendet. Im folgenden Code werden einem XML-Element (Product) ein Attribut (supplierID) und ein Wert (A23-1) hinzugefügt:

Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("Product")
        writer.WriteAttributeString("supplierID", "A23-1")
        writer.WriteElementString("ProductID", "12345")
        writer.WriteEndElement()
End Using
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
    writer.WriteStartElement("Product");
    writer.WriteAttributeString("supplierID", "A23-1");
    writer.WriteElementString("ProductID", "12345");
    writer.WriteEndElement();
}

Der oben genannte Code gibt Folgendes auf der Konsole aus:

<Product supplierID="A23-1">
  <ProductID>12345</ProductID>
</Product>

WriteStartAttribute

Die WriteStartAttribute-Methode ist eine erweiterte Version der WriteAttributeString-Methode. Sie ermöglicht das Schreiben des Attributwerts mithilfe mehrerer Methodenaufrufe. Mit WriteValue können Sie z. B. einen typisierten Wert schreiben.

Das Attribut wird durch Aufrufen der WriteEndAttribute-Methode geschlossen.

Im folgenden Code ist hireDate ein DateTime-Objekt, das das Einstellungsdatum eines Mitarbeiters enthält. Der Code erstellt ein Attribut zum Beurteilungstermin, das den berechneten Wert für den halbjährlichen Beurteilungstermin des Mitarbeiters enthält.

Dim hireDate As New DateTime(2008, 5, 20)
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("Employee")
    writer.WriteStartAttribute("review-date")
    writer.WriteValue(hireDate.AddMonths(6))
    writer.WriteEndAttribute()
    writer.WriteElementString("EmployeeID", "12345")
    writer.WriteEndElement()
End Using
DateTime hireDate = new DateTime(2008, 5, 20);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
    writer.WriteStartElement("Employee");
    writer.WriteStartAttribute("review-date");
    writer.WriteValue(hireDate.AddMonths(6));
    writer.WriteEndAttribute();
    writer.WriteElementString("EmployeeID", "12345");
    writer.WriteEndElement();
}

Der oben genannte Code gibt Folgendes auf der Konsole aus:

<Employee review-date="2008-11-20T00:00:00">
  <EmployeeID>12345</EmployeeID>
</Employee>

WriteAttributes

Mit der WriteAttributes-Methode können Sie alle Attribute kopieren, die sich an der aktuellen Position des angegebenen XmlReader-Objekts befinden. Das WriteAttributes-Verhalten hängt vom Typ des Knotens ab, auf dem der Reader gerade positioniert ist.

In der folgenden Tabelle werden die Ergebnisse des Aufrufs von WriteAttributes für alle Knotentypen beschrieben. Wenn der Reader auf einem Knotentyp positioniert ist, der nicht in der folgenden Tabelle aufgeführt ist, führt WriteAttributes keine Operation aus.

Knotentyp

Verhalten von WriteAttributes

Attribut

Erstellt das aktuelle Attribut und anschließend die verbleibenden Attribute bis zum schließenden Tag des Elements.

Element

Erstellt alle im Element enthaltenen Attribute.

XML-Deklaration

Erstellt alle Attribute in der Deklaration.

Im folgenden Code kopiert der Writer z. B. alle Attribute, die sich an der aktuellen Position des Readers befinden, in den Writer.

Dim reader As XmlReader = XmlReader.Create("book.xml")
reader.ReadToDescendant("book")
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("root")
    writer.WriteAttributes(reader, True)
    writer.WriteEndElement()
End Using
XmlReader reader = XmlReader.Create("book.xml");
reader.ReadToDescendant("book");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{

    writer.WriteStartElement("root");
    writer.WriteAttributes(reader, true);
    writer.WriteEndElement();

}

Im Code wird diese Beispiel-XML-Datei (book.xml) verwendet:

<?xml version="1.0" ?>
<book genre="autobiography" 
      publicationdate="1981" 
      ISBN="1-861003-11-0">Book Title</book>

Der oben genannte Code gibt Folgendes auf der Konsole aus:

<root genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0" />

Siehe auch

Weitere Ressourcen

Schreiben von XML mit dem "XmlWriter"