Compartir a través de


Comparación de objetos mediante XmlNameTable con XmlReader

La clase XmlNameTable permite a las implementaciones de la claseXmlReader usar comparaciones de punteros en lugar de comparaciones de cadenas al analizar datos o realizar la comparación de operaciones en documentos XML.El uso de esta tabla aumenta el rendimiento de las clases derivadas de XmlReader cuando se comparan y se utilizan nombres de atributos y elementos.XmlNameTable también reduce la cantidad de memoria asignada durante cada análisis debido a que cada nombre de elemento o atributo se asigna sólo una vez.Se utiliza la misma instancia que el objeto de cadena que almacena el nombre si el mismo nombre ocurre múltiples veces en el documento XML.

Nota

En .NET Framework 2.0, la práctica recomendada es crear instancias XmlReader mediante la clase XmlReaderSettings y el método Create.Esto le permite sacar el máximo provecho de todas las nuevas características introducidas en .NET Framework.Para obtener más información, vea Creación de sistemas de lectura XML.

Utilizar XmlNameTable

XmlNameTable es una clase base abstracta con NameTable como implementación.NameTable contiene una versión fragmentada de los nombres de atributos y elementos, junto con los prefijos y los URI del espacio de nombres.Si la aplicación está realizando demasiadas comparaciones en nombres de elemento o atributo, la aplicación debería utilizar NameTable a partir de XmlReader.El usuario puede obtener el NameTable que el sistema de lectura está utilizando a partir de la propiedad XmlReader.NameTable.Para obtener una descripción de la fragmentación, vea XmlNameTable.

La aplicación puede agregar nombres a la tabla con el método Add.En el ejemplo siguiente se demuestra que las comparaciones se efectúan mediante el método Equals o el operador ==, que determina si el objeto proporcionado en la llamada al método es la misma instancia que la del objeto actual.

Dim cust As Object = reader.NameTable.Add("Customer")
While reader.Read()
   ' The "if" uses efficient pointer comparison.
   If cust Is reader.Name Then
      ...
   End If
End While
object cust = reader.NameTable.Add("Customer");
while (reader.Read())
{
   // The "if" uses efficient pointer comparison.
   if (cust == reader.Name)   
   {
      ...
   }
}

Vea también

Conceptos

Leer fragmentos de XML con XmlReader

Otros recursos

Uso de la clase XmlReader