Lesen von Attributen
Die XmlReader-Klasse stellt verschiedene Methoden und Eigenschaften zum Lesen von Attributen bereit. Attribute befinden sich in der Regel in Elementen. Sie sind jedoch auch in XML-Deklarationen und Dokumenttypknoten zulässig.
Lesen von Attributen in Elementen
Bei Positionierung auf einem Elementknoten ermöglichen die MoveToAttribute-Methoden das Durchlaufen der Attributliste des Elements. Nach dem Aufrufen von MoveToAttribute reflektieren die Knoteneigenschaften (z. B. Name, NamespaceURI, Prefix usw.) die Eigenschaften dieses Attributs und nicht des enthaltenden Elements, zu dem es gehört.
In der folgenden Tabelle werden die Methoden und Eigenschaften beschrieben, die speziell für die Verarbeitung von Attributen entwickelt wurden.
Membername |
Beschreibung |
---|---|
Ruft die Anzahl der Attribute im Element ab. |
|
Ruft den Wert des Attributs ab. |
|
Ruft einen Wert ab, der angibt, ob der aktuelle Knoten über Attribute verfügt. |
|
Ruft einen Wert ab, der angibt, ob der aktuelle Knoten ein Attribut ist, das aus dem in der DTD oder im Schema definierten Standardwert generiert wurde. |
|
Ruft den Wert des angegebenen Attributs ab. |
|
Wechselt zum angegebenen Attribut. |
|
Wechselt zu dem Element, das den aktuellen Attributknoten besitzt. |
|
Wechselt zum ersten Attribut. |
|
Wechselt zum nächsten Attribut. |
|
Löst die Attributwerte in einen oder mehrere Textknoten, EntityReference-Knoten oder EndEntity-Knoten auf. |
Alle allgemeinen Methoden und Eigenschaften von XmlReader können auch für die Verarbeitung von Attributen verwendet werden. Beispielsweise reflektieren die Name-Eigenschaft und die Value-Eigenschaft nach dem Positionieren von XmlReader auf einem Attribut die Werte des Attributs. Sie können den Wert des Attributs auch mit einer beliebigen Read-Methode für den Inhalt abrufen.
Lesen von Attributen in anderen Knotentypen
Das häufigste Szenario ist die Verarbeitung von Attributen in Elementknoten. Attribute können auch in XML-Deklarationen und Dokumenttypdeklarationen vorkommen.
Hinweis |
---|
Wenn der XmlReader auf einem Verarbeitungsanweisungsknoten positioniert ist, gibt die Value-Eigenschaft den gesamten Textinhalt zurück.Elemente im Verarbeitungsanweisungsknoten werden nicht als Attribute behandelt.Sie können mit der GetAttribute-Methode oder der MoveToAttribute-Methode nicht gelesen werden. |
XML-Deklarationsknoten
Bei Positionierung auf einem XML-Deklarationsknoten werden die Informationen zu Version, Eigenständigkeit und Codierung von der Value-Eigenschaft als einzelne Zeichenfolge zurückgegeben. Bei einigen Readern können die Informationen zu Version, Eigenständigkeit und Codierung auch als Attribute verfügbar gemacht werden.
Hinweis |
---|
Die durch die Create-Methode erstellten XmlReader-Objekte, die XmlTextReader-Klasse und die XmlValidatingReader-Klasse, machen die Elemente für Version, Eigenständigkeit und Codierung als Attribute verfügbar. |
Dokumenttypknoten
Wenn der XmlReader auf einem Dokumenttypknoten positioniert ist, können die Werte für die Literale SYSTEM und PUBLIC mithilfe der GetAttribute-Methode und der Item-Eigenschaft zurückgegeben werden. Durch das Aufrufen von reader.GetAttribute("PUBLIC") wird beispielsweise der Wert PUBLIC zurückgegeben.
Beispiele
Im folgenden Beispiel werden alle Attribute eines Elements mithilfe der AttributeCount-Eigenschaft gelesen.
' Display all attributes.
If reader.HasAttributes Then
Console.WriteLine("Attributes of <" + reader.Name + ">")
Dim i As Integer
For i = 0 To (reader.AttributeCount - 1)
Console.WriteLine(" {0}", reader(i))
Next i
' Move the reader back to the element node.
reader.MoveToElement()
End If
// Display all attributes.
if (reader.HasAttributes) {
Console.WriteLine("Attributes of <" + reader.Name + ">");
for (int i = 0; i < reader.AttributeCount; i++) {
Console.WriteLine(" {0}", reader[i]);
}
// Move the reader back to the element node.
reader.MoveToElement();
}
Im folgenden Beispiel werden alle Attribute eines Elements mithilfe der MoveToNextAttribute-Methode in einer While-Schleife gelesen.
If reader.HasAttributes Then
Console.WriteLine("Attributes of <" + reader.Name + ">")
While reader.MoveToNextAttribute()
Console.WriteLine(" {0}={1}", reader.Name, reader.Value)
End While
' Move the reader back to the element node.
reader.MoveToElement()
End If
if (reader.HasAttributes) {
Console.WriteLine("Attributes of <" + reader.Name + ">");
while (reader.MoveToNextAttribute()) {
Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
}
// Move the reader back to the element node.
reader.MoveToElement();
}
Im folgenden Beispiel wird der Wert eines Attributs anhand des Namens abgerufen.
reader.ReadToFollowing("book")
Dim isbn As String = reader.GetAttribute("ISBN")
Console.WriteLine("The ISBN value: " + isbn)
reader.ReadToFollowing("book");
string isbn = reader.GetAttribute("ISBN");
Console.WriteLine("The ISBN value: " + isbn);