Compartir a través de


Posición del nodo actual en XmlReader

La clase XmlReader proporciona acceso de sólo avance a un archivo o secuencia XML.El nodo actual es el nodo XML en el que está situado actualmente el sistema de lectura.Todos los métodos a los que se llama y todas las acciones que se realizan están relacionadas con el nodo actual, y todas las propiedades recuperadas reflejan el valor del nodo actual.

El sistema de lectura avanza mediante llamadas a uno de los métodos Read.Al llamar repetidamente al método Read, el sistema de lectura pasa al siguiente nodo.Normalmente, esas llamadas se realizan dentro de un bucle While.

En el siguiente ejemplo se muestra cómo navegar por la secuencia para determinar el tipo del nodo actual.

reader.MoveToContent()
' Parse the file and display each of the nodes.
While reader.Read()
  Select Case reader.NodeType
    Case XmlNodeType.Element
      Console.Write("<{0}>", reader.Name)
    Case XmlNodeType.Text
      Console.Write(reader.Value)
    Case XmlNodeType.CDATA
      Console.Write("<![CDATA[{0}]]>", reader.Value)
    Case XmlNodeType.ProcessingInstruction
      Console.Write("<?{0} {1}?>", reader.Name, reader.Value)
    Case XmlNodeType.Comment
      Console.Write("<!--{0}-->", reader.Value)
    Case XmlNodeType.XmlDeclaration
      Console.Write("<?xml version='1.0'?>")
    Case XmlNodeType.Document
    Case XmlNodeType.DocumentType
      Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value)
    Case XmlNodeType.EntityReference
      Console.Write(reader.Name)
    Case XmlNodeType.EndElement
      Console.Write("</{0}>", reader.Name)
  End Select
End While
reader.MoveToContent();
  // Parse the file and display each of the nodes.
  while (reader.Read()) {
    switch (reader.NodeType) {
      case XmlNodeType.Element:
          Console.Write("<{0}>", reader.Name);
          break;
      case XmlNodeType.Text:
          Console.Write(reader.Value);
          break;
       case XmlNodeType.CDATA:
           Console.Write("<![CDATA[{0}]]>", reader.Value);
           break;
       case XmlNodeType.ProcessingInstruction:
           Console.Write("<?{0} {1}?>", reader.Name, reader.Value);
           break;
       case XmlNodeType.Comment:
           Console.Write("<!--{0}-->", reader.Value);
           break;
       case XmlNodeType.XmlDeclaration:
           Console.Write("<?xml version='1.0'?>");
           break;
       case XmlNodeType.Document:
           break;
       case XmlNodeType.DocumentType:
           Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
           break;
       case XmlNodeType.EntityReference:
           Console.Write(reader.Name);
           break;
       case XmlNodeType.EndElement:
           Console.Write("</{0}>", reader.Name);
           break;
   } 
}

Las propiedades disponibles en la clase XmlReader no se pueden aplicar a todos los tipos de nodos.Por ejemplo, la propiedad IsEmptyElement devuelve true si el nodo actual es un elemento y termina con un carácter de barra diagonal hacia delante "/>".Al llamar a esta propiedad en cualquier tipo de nodo, se devuelve false porque esta propiedad no se puede aplicar a otros tipos de nodos.Para obtener una lista de todos los tipos de nodos, vea Tipos de nodos XML.

Vea también

Referencia

XmlReader

Conceptos

Leer fragmentos de XML con XmlReader

Otros recursos

Uso de la clase XmlReader