Eventos
Compilación de Intelligent Apps
17 mar, 21 - 21 mar, 10
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahoraEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.
Nota
Se recomienda crear instancias XmlReader mediante el método XmlReader.Create para aprovechar las nuevas funcionalidades.
XmlTextReader proporciona acceso de solo avance y de solo lectura a un flujo de datos XML. El nodo actual hace referencia al nodo en el que está situado el sistema de lectura. Para avanzar el sistema de lectura, utilice cualquiera de los métodos de lectura y las propiedades reflejan el valor del nodo actual.
Esta clase implementa XmlReader y cumple con el Lenguaje de marcado extensible (XML) 1.0 de W3C y los espacios de nombres en recomendaciones XML. XmlTextReader
proporciona la siguiente funcionalidad:
Aplica las reglas de XML con formato correcto.
XmlTextReader
no proporciona validación de datos.
Comprueba que DocumentType
los nodos tienen el formato correcto. XmlTextReader
comprueba la DTD para ver que tenga un formato correcto, pero no valida el uso de DTD.
Para los nodos donde NodeType es XmlNodeType.EntityReference
, se devuelve un único nodo vacío EntityReference
(es decir, la propiedad Value es String.Empty
).
Nota
Las declaraciones reales de entidades de la DTD se denominan nodos Entity
. Al hacer referencia a estos nodos en los datos, se les llama nodos EntityReference
.
Dado que XmlTextReader
no realiza las comprobaciones adicionales necesarias para la validación de datos, proporciona un analizador bien formado rápido.
Para realizar la validación de datos, use una validación de XmlReader.
Para leer datos XML de un XmlDocument, use XmlNodeReader.
XmlTextReader
genera un XmlException en los errores de análisis XML. Después de iniciar una excepción, el estado del lector no es predecible. Por ejemplo, el tipo de nodo notificado puede ser diferente del tipo de nodo real del nodo actual. Use la propiedad ReadState para comprobar si el lector está en estado de error.
A continuación, se muestran aspectos que se deben tener en cuenta al usar la clase XmlTextReader.
Las excepciones producidas por el XmlTextReader pueden revelar información de ruta de acceso que no desea que se propague a la aplicación. Las aplicaciones deben detectar las excepciones y procesarlas de la manera correspondiente.
El procesamiento de DTD está habilitado de manera predeterminada. Deshabilite el procesamiento de DTD si le preocupan los problemas de denegación de servicio o si trabaja con orígenes que no son de confianza. Para deshabilitarlo, establezca la propiedad DtdProcessing en Prohibit.
Si tiene habilitado el procesamiento de DTD, puede utilizar XmlSecureResolver para restringir los recursos a los que tiene acceso XmlTextReader. También puede diseñar su aplicación para que el procesamiento XML se realice con restricciones de memoria y tiempo. Por ejemplo, puede configurar límites de tiempo de espera en la aplicación ASP.NET.
Los datos XML pueden incluir referencias a recursos externos como, por ejemplo, un archivo DTD. De manera predeterminada, los recursos externos se resuelven utilizando un objeto XmlUrlResolver sin credenciales de usuario. Puede aumentar la protección aún más realizando cualquiera de las siguientes acciones:
Restrinja los recursos a los que puede tener acceso XmlTextReader estableciendo la propiedad XmlResolver en un objeto XmlSecureResolver.
No permita que XmlReader abra ningún recurso externo estableciendo la propiedad XmlResolver en null
.
Los datos XML pueden contener un gran número de atributos, declaraciones de espacios de nombres, elementos anidados, etc. cuyo procesamiento tarda una cantidad de tiempo importante. Para limitar el tamaño de la entrada que se envía a XmlTextReader, cree una implementación de IStream personalizada y proporcione el XmlTextReader.
El método ReadValueChunk se puede usar para controlar grandes flujos de datos. Este método lee una pequeña cantidad de caracteres a la vez en lugar de asignar una única cadena para todo el valor.
De manera predeterminada, las entidades generales no se expanden. Lo hacen cuando se llama al método ResolveEntity.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Eventos
Compilación de Intelligent Apps
17 mar, 21 - 21 mar, 10
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahoraDocumentación
Clase System.Xml.XmlReader - .NET
Obtenga información sobre la clase System.Xml.XmlReader.