Tire de XML hacia adelante usando el objeto .NET Framework XmlReader
XML
Microsoft introdujo un tercer paradigma de análisis de XML denominado modelo de extracción. Este modelo intenta proporcionar acceso de solo lectura, de avance y sin almacenamiento en caché a los datos XML.
En el pasado, solo había dos formas de analizar archivos XML: SAX
(API simple para XML) y DOM (documento
modelo de objeto).El primero lee el archivo XML secuencialmente y emite la señal
La aplicación busca diferentes componentes XML, como elementos y atributos,
Mientras que el segundo crea una representación de árbol de los datos en el documento XML,
A continuación, se proporcionan varios métodos para examinar estos datos.
Si bien cada una de estas dos técnicas tiene su propio conjunto de
ventaja
y desventajas, Microsoft introdujo un tercer paradigma en .NET Framework llamado «Modelo de extracción» que intenta
Proporciona acceso no almacenado en caché, de solo avance y de solo lectura a los datos XML.en laico
término, lo que significa que puede acceder a la información en un archivo XML
Secuencial (como SAX) con opción adicional para omitir ciertos elementos y sus contenidos en tiempo de ejecución
(como DOM). un nuevo objeto, XmlReader()
objeto, que ha sido creado para realizar esta tarea.
Vea cómo funciona XmlReader()
para trabajar, cree el siguiente temp.xml
archivo XML.
3.9
5.6
15.6
21.7
26.1
29.4
28.3
24.4
18.3
12.2
6.7
10.0
Nada especial aquí: solo una lista de altas temperaturas
Doce meses al año en Nueva York.La tarea es calcular el año
El promedio de estas temperaturas, ejecutado por el script en el Listado A.
El resultado de este script debe parecerse a la Figura A.
Figura A |
producción |
Si observa detenidamente el guión en el Listado A, encontrará
puede ser confuso porque lo primero que hace es crear un
el objeto XmlTextReader() para leer
Archivo XML temperatura.xml.no haga
Preocúpate, la razón es simple.Verá, la clase XmlReader() es una clase abstracta que permite a los desarrolladores
Extiéndalo para construir su propio analizador, usando características de XML
Tire del paradigma.Sin embargo, si no tiene las habilidades técnicas para escribir su
propio analizador, o simplemente vago (como yo), puede usar la clase XmlTextReader() en su lugar – es un
Derivación integrada de XmlReader() abstracto
clase.
En consonancia con otros miembros del ensamblado System.Xml, XmlTextReader()
La clase tiene un método Read()
Devuelve verdadero cuando se encuentra un nodo XML, falso cuando encuentra un final
árbol XML. cuando se usa en un período de tiempo()
bucle, este método garantiza que se procese todo el archivo.
dentro mientras()
bucle, utilicé la propiedad NodeType
identificar nodos de elementos, y
Averigüe sus nombres (esto también se aplica a las propiedades).Solo me interesan las propiedades de la unidad y el nombre
y elemento
respectivamente. Utilice el método GetAttribute() para recuperar los valores de estos atributos.la temperatura
cada valor Obtenido mediante el método ReadString(). Una vez que obtenga los valores para cada mes,
El siguiente paso es calcular el promedio anual.esto es a través
Sume todos los valores y divida la suma por la cantidad de meses.
Cada documento XML debe estar bien formado y ser válido.a pesar de que
Cualquier analizador XML puede validar archivos XML, solo los analizadores seleccionados pueden validar
Cree archivos a partir de esquemas DTD, XDR o XSD externos.
El ensamblado System.Xml proporciona un
Tal analizador, en forma de XMLValidatingReader()
Object, que es otra derivación de la clase abstracta XmlReader().Considere el esquema XSD que se muestra en el Listado B y su instancia de documento XML
Como se muestra en el Listado C.
Listado D muestra
Un ejemplo de validación de una instancia de documento contra un esquema.carga esto
Ejemplo en el navegador, verá que el archivo XML tiene éxito
Validado por el analizador, similar a la Figura B.
Figura B |
verificar |
Para hacer las cosas interesantes, edite el archivo XML de arriba y
Eliminar elemento
El tercer fondo mutuo.XmlValidatingReader() le informará cuando intente validar el archivo nuevamente
El archivo XML no es válido (Figura C).
Figura C |
XML no válido |
Como antes, primero inicializo el objeto XmlTextReader() con el archivo XML deseado, luego paso
Va al constructor de XmlValidatingReader()
Objetivo. Propiedad ValidationType
Establece el tipo de conjunto de reglas para realizar la validación, los valores incluyen ValidationType.Schema, Auto, DTD, XDR.
A continuación, ValidationEventHandler
propiedad está vinculada a un controlador de eventos; este controlador de eventos se activará si
El analizador encontró un error al validar el archivo. El método Read() es responsable de procesar
archivo y variable blnValFlag
Se utiliza como bandera para determinar si el proceso de verificación fue exitoso.
Así que el resumen XmlReader()
La clase sienta las bases para el XmlTextReader() derivado
y el objeto XmlValidatingReader(),
Y puede hacer todo tipo de cosas hermosas.¿Logrará atraer a la multitud para que lo use?
¿Soluciones para SAX y DOM? Sólo el tiempo dirá.