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

AttributeCount

Obtiene el número de atributos en el elemento.

GetAttribute

Obtiene el valor del atributo.

HasAttributes

Obtiene un valor que indica si el nodo actual tiene atributos.

IsDefault

Obtiene un valor que indica si el nodo actual es un atributo generado a partir del valor predeterminado definido en la DTD o el esquema.

Item

Obtiene el valor del atributo especificado.

MoveToAttribute

Se desplaza hasta el atributo especificado.

MoveToElement

Se mueve al elemento que es propietario del nodo de atributo actual.

MoveToFirstAttribute

Se desplaza hasta el primer atributo.

MoveToNextAttribute

Se desplaza hasta el siguiente atributo.

ReadAttributeValue

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.

NotaNota

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.

NotaNota

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);

Vea también

Conceptos

Leer fragmentos de XML con XmlReader