Lectura de atributos
La clase XmlReader incluye varios métodos y propiedades para leer atributos.Los atributos se suelen encontrar en elementos.Sin embargo, también se permiten en nodos de tipos de documentos y declaraciones XML.
Lectura de atributos en elementos
Cuando están situados en un nodo de elementos, los métodos MoveToAttribute le permiten recorrer la lista de atributos del elemento.Después de llamar a MoveToAttribute, las propiedades del nodo (por ejemplo, Name, NamespaceURI, Prefix, etc.) reflejan las propiedades de ese atributo y no el elemento contenedor al que pertenecen.
En la siguiente tabla se describen los métodos y las propiedades que están específicamente diseñadas para procesar atributos.
Nombre del miembro |
Descripción |
---|---|
Obtiene el número de atributos en el elemento. |
|
Obtiene el valor del atributo. |
|
Obtiene un valor que indica si el nodo actual tiene algún atributo. |
|
Obtiene un valor que indica si el nodo actual es un atributo que se ha generado a partir del valor predeterminado definido en la DTD o esquema. |
|
Obtiene el valor del atributo especificado. |
|
Se mueve al atributo especificado. |
|
Se mueve al elemento que es propietario del nodo de atributo actual. |
|
Se mueve al primer atributo. |
|
Se mueve al siguiente atributo. |
|
Analiza el valor del atributo en uno o varios nodos Text, EntityReference o EndEntity. |
También se puede utilizar cualquiera de las propiedades y los métodos XmlReader generales para procesar atributos.Por ejemplo, después de situar XmlReader en un atributo, las propiedades Name y Value reflejan los valores del atributo.También puede utilizar cualquiera de los métodos Read de contenido para obtener el valor del atributo.
Lectura de atributos en otros tipos de nodos
La situación más común es el procesamiento de atributos en nodos de elementos.Los atributos también se encuentran en declaraciones XML y declaraciones de tipos de documentos.
Nota
Cuando XmlReader está situado en un nodo de instrucción de procesamiento, la propiedad Value devuelve el contenido de texto completo.Los elementos del nodo de instrucción de procesamiento no se tratan como atributos.No se pueden leer con los métodos GetAttribute o MoveToAttribute.
Nodo de declaraciones XML
Cuando se sitúe en un nodo de declaraciones XML, la propiedad Value devuelve la información de codificación, independiente y de la versión como una sola cadena.En algunos sistemas de lectura, esta información también se puede proporcionar como atributos.
Nota
Los objetos XmlReader que crea el método Create y las clases XmlTextReader y XmlValidatingReader proporcionan dicha información como atributos.
Nodo de tipos de documentos
Cuando XmlReader está situado en un nodo de tipos de documentos, se puede utilizar el método GetAttribute y la propiedad Item para devolver los valores de los literales SYSTEM y PUBLIC.Por ejemplo, al llamar a reader.GetAttribute("PUBLIC"), se devuelve el valor PUBLIC.
Ejemplos
En el siguiente ejemplo se leen todos los atributos en un elemento utilizando la propiedad AttributeCount.
' 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();
}
En el siguiente ejemplo se leen todos los atributos en un elemento utilizando el método MoveToNextAttribute en un bucle While.
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();
}
En el siguiente ejemplo se obtiene el valor de un atributo por nombre.
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);