Microsoft XML Core Services MSXML



Documentos relacionados
Índice. Programación en Internet Curso Introducción El DOM en PHP. Programación en Internet DLSI - Universidad de Alicante 1

6.1 APIs para XML. APIs para XML (I) ! Uno de los usos más habituales de XML (y menos esperado) es como formato de intercambio de datos.

Roberto Gómez Cárdenas Qué es DOM?

Procesamiento de documentos XML

Práctica de introducción a

Tema IV. XML V. APIs (DOM & SAX)

Visualización y Transformaciones en XML

Tema 3, parte 4. Javascript: el DOM (Modelo de Objetos del. Documento) Texto.

SAX Parser. Ing. Augusto Dobeslao Herández López (Bases de Datos en XML)

Iniciar flujo a partir de un archivo XML

Almacenamiento de documentos XML

Microsoft Access 2010 (Completo)

PROGRAMA FORMATIVO MICROSOFT ACCESS 2007 (COMPLETO)

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

TUTORIAL DESARROLLO DE APLICACIONES PARA EVOLUTION CON MS ACCESS

19. Packages o paquetes

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

DOM. Document Object Model

GENERACIÓN Y CONSTRUCCIÓN DE DOCUMENTOS XML

SEGUNDA PARTE: DOM y jquery

PROGRAMA FORMATIVO MICROSOFT ACCESS 2003 (COMPLETO)

extensible Markup Language

Definiciones. Tema 21_Módulos Menú 1

Tutorial Básico de vbscript

Tema 1. Introducción a JAVA

XMLNode y XMLDocument en el aula

Leer XML con XMLReader en el aula

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Capítulo 6. ÁRBOLES.

CFDi Client Manual de Usuario

TEMA 3 A: INTRODUCCIÓN AL DOM

Manual del Protocolo XML-RPC de Mensajería Negocios

CONEXIÓN REMOTA CFDI. Proveedor autorizado de certificación SAT Número de aprobación: 55029

ESOFT 3 Nice Screen Scraper: Web service, Console client and Web client

BASES DE DATOS OFIMÁTICAS

Workflows? Sí, cuántos quiere?

CURSO: Programación de Aplicaciones en Lenguaje JAVA

Técnicas de Desarrollo de Programas Ingeniería Informática Curso 2008 / Ejercicios de Patrones de Diseño:

1 Introducción a XML

Comencemos a programar con. Entrega 17

VISUAL BASIC Diseño de Formularios MDI y Menús - Proyectos Aplica

XML. Necesitamos un formato de datos: Posibles usos. Estandard Robusto Extensible

Estructuras de Datos y Algoritmos Tecnólogo en Informática

A Manual de instalación de Opinion Analyzer (OPAL)

ESOFT 3 Nice Screen Scraper: A simple scraper

Interacción y manejo de documentos XML.

5.4. Manual de usuario

Introducción a XML - Validación y Parseo. Huibert Aalbers, Senior Certified Software IT Architect

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

5.1 Introducción a Servicios Web

Capítulo 1 Documentos HTML5

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

CAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS

Desarrollo de Servicios Web con JBuilder

Tutorial para la creación de Bots de NTRadmin

Se ha confeccionado una aplicación sencilla para poder probar el interfaz de gestión explotación de MEGA, Modelo Estandarizado de Gestión de Agua.

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Programa. Conceptos básicos: variables, valores y objetos predefinidos, operadores, etc. etc. Callbacks, eval(), etc.

XPERTO EN DISEÑO DE PÁGINAS WEB

Fundamentos de la Programación

LABORATORIO Nº 1 Sistemas de Información asociados a los Formularios en Excel

Arquitectura Básica CÍCLOPE CMS

DEPARTAMENTO: Informática. MATERIA: Programación. NIVEL: 1º Desarrollo de Aplicaciones Multiplataforma

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

Programación de red con Cisco Application Centric Infrastructure

TEMA 2. CARACTERÍSTICAS DEL LENGUAJE VISUAL BASIC

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

BitcodeSoft Plugin XMLparser Velneo 7.x

Capitulo III. Diseño del Sistema.

Modulo 1 El lenguaje Java

Árboles AVL. Laboratorio de Programación II

Guías técnicas Grupo Danysoft: Aplicaciones Web seguras con ASP.NET

2 EL DOCUMENTO DE ESPECIFICACIONES

Programación Web Avanzada: AJAX y Google Maps

MICROSOFT ACCESS 2010

Tecnología XML. Unidad: 3 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Título: Configuración de BDE en MS Windows Vista y Windows 7 José Sanchis jsanchis@spl-ssi.com SPL Sistemas de Información Afecta a: Istas21 1.

Servicio de Almacenamiento Certificado

COMISIÓN NACIONAL PARA EL AHORRO DE ENERGÍA

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

SISTEMA DE ESPECIICACION DE REQUERIMIENTOS

Ampliación de Estructuras de Datos

Diseño de sitios Web mediante estándares

Servicio Web de Timbrado

Prerrequisitos El alumno debe conocer y dominar los aspectos básicos de programación.

ELECTRONIC DOCUMENT LIBRARY

Capítulo 9. Archivos de sintaxis

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

CERRADURAS RFID PARA TAQUILLAS PASSTECH

Curso de Python Inicial

Características y ventajas de WinZip

Eurowin 8.0 SQL. Manual del módulo TALLAS Y COLORES

XML+AS2 XML. Extensible Markup Language. Conocimientos Básicos. Prof: Moisés Mañas Dpto. Escultura

Transcripción:

Microsoft XML Core Services MSXML Sergio Luján Mora sergio.lujan@ua.es http://gplsi.dlsi.ua.es/~slujan/ 1

MSXML... 3 Introducción... 3 Objetos del DOM... 5 Objeto XMLDOMDocument... 5 Construcción de un documento XML... 6 A partir de un fichero... 6 A partir de una URL... 7 A partir de una cadena... 7 Objeto XMLDOMParseError... 8 Validar un documento... 8 Durante la carga del documento... 8 Una vez cargado el documento... 10 Objeto XMLDOMNode... 11 Objeto XMLDOMNodeList... 12 Estandarizar el formato de un documento XML... 13 2

MSXML Introducción Microsoft XML Core Services 1 (MSXML) 4.0, también llamado MSXML 4.0 SDK o Microsoft XML 4.0 Parser SDK, es un API (Application Programming Interface) que contiene una serie de interfaces para cargar y analizar documentos XML, trabajar con documentos en forma jerárquica, seleccionar fragmentos de un documento, así que como validar un documento contra su DTD o su XML Schema. Todo esto se realiza mediante llamadas a funciones y procedimientos para acceder, cambiar, borrar o añadir nodos de información a los documentos XML. El funcionamiento básico es sencillo: 1. Se lee todo el documento. 2. Se construye en memoria un árbol (estructura jerárquica) que refleja toda la estructura del documento. 3. La aplicación que hace uso del API recorre el árbol realizando el procesamiento correspondiente: añadir, modificar o eliminar elementos del documento. MSXML incorpora un DOM (Document Object Model), que permite representar un documento XML en forma de árbol. Además, también permite consultar/construir documentos XML de forma programática. MSXML está implementado como un componente (representado mediante una DLL), por lo que es independiente del lenguaje de programación y se puede emplear desde cualquier lenguaje de programación (Visual Basic, Visual C++, Borland C++, etc.). Por ejemplo, en la Figura 1 se puede observar una imagen de la ayuda de 1 Disponible en http://msdn.microsoft.com/library/default.asp?url=/- downloads/list/xmlgeneral.asp. 3

MSXML: para cada objeto, método o propiedad que se explica, se incluye un ejemplo de uso en JavaScript, Visual Basic y Visual C++. Figura 1 Existen diferentes versiones de MSXML, lo que puede causar una cierta confusión a la hora de su empleo. Las diferentes versiones pueden convivir simultáneamente, ya que cada una dispone de su propio ProgID. Las versiones existentes hasta el momento, con su correspondiente ProgID son: MSXML: Msxml2.DOMDocument MSXML2: Msxml2.DOMDocument MSXML2 v2.6: Msxml2.DOMDocument.2.6 MSXML2 v3.0: Msxml2.DOMDocument.3.0 MSXML2 v4.0: Msxml2.DOMDocument.4.0 Además del ProgID, también se puede usar el ClassID (CLSID). Por ejemplo, para Msxml2.DOMDocument.4.0, el ClassID es 88D969C0-F192-11D4-4

A65F-0040963251E5. Si se intenta emplear una versión de MSXML que no está instalada, se producirá un error, tal como se muestra en la Figura 2. Figura 2 El modelo definido por DOM no es el único disponible para el procesamiento de documentos XML. SAX (Simple API for XML) define una interfaz de procesamiento de documentos muy popular, aunque no se trata de un estándar. El modelo de procesamiento usado por SAX está orientado a eventos. La interfaz proporcionada por SAX permite que las aplicaciones establezcan manejadores para los distintos eventos de procesamiento, de manera que cuando se produce uno de estos eventos el analizador de SAX invoca al manejador especificado por la aplicación. Estos eventos se corresponden con situaciones en las que el analizador reconoce algún tipo de información significativa, tal como la existencia de una etiqueta de inicio de un elemento o la aparición de una etiqueta de fin. Objetos del DOM MSXML posee una serie de objetos e interfaces que permiten trabajar con el DOM de un documento XML. Los principales objetos son: XMLDOMDocument: representa el nivel superior de un documento XML (pero no el elemento raíz). XMLDOMParseError: representa un error de análisis producido en el documento XML. XMLDOMNode: representa un nodo en el documento XML. XMLDOMNodeList: representa una lista de nodos. Objeto XMLDOMDocument 5

Este objeto representa el nivel superior de un documento XML, pero no el elemento raíz del documento. Sus principales propiedades y métodos son: Propiedades: async: indica si la carga del documento es asíncrona. doctype: contiene el DOCTYPE. parseerror: devuelve información sobre el último error de análisis. text: contenido texto del nodo y todos sus descendientes. url: URL del último documento cargado. validateonparse: indica si se tiene que validar el documento durante la carga. xml: representación XML del nodo y todos sus descendientes. Métodos: load: carga un documento (local o remoto). loadxml: carga un documento a partir de una cadena. save: guarda un documento. Construcción de un documento XML Existen múltiples formas de crear un documento XML: a partir de un fichero (método load), a partir de una URL (método load) y a partir de una cadena. A continuación se incluye un ejemplo de cada tipo. A partir de un fichero Option Explicit Dim xobj Set xobj = CreateObject("msxml2.DOMDocument.4.0") ' Hasta que no se termine de cargar ' no se devuelve el control al programa xobj.async = false xobj.load "biblioteca.xml" MsgBox xobj.text MsgBox xobj.xml 6

A partir de una URL Option Explicit Dim xobj Set xobj = CreateObject("msxml2.DOMDocument.4.0") ' Hasta que no se termine de cargar ' no se devuelve el control al programa xobj.async = false xobj.load "http://www.dlsi.ua.es/~slujan/files/biblioteca.xml" MsgBox xobj.text MsgBox xobj.xml A partir de una cadena Option Explicit Dim xobj, doc doc = "<?xml version=""1.0"" encoding=""iso-8859-1"" standalone=""no""?>" doc = doc & "<!DOCTYPE BIBLIOTECA SYSTEM ""biblioteca.dtd"">" doc = doc & "<BIBLIOTECA>" doc = doc & "<LIBRO COD=""1"">" doc = doc & "<TITULO>XML para todos</titulo>" doc = doc & "<AUTOR>Sergio Lujan Mora</AUTOR>" doc = doc & "<ANYO>2001</ANYO>" doc = doc & "<EDITORIAL>UA Prensa</EDITORIAL>" doc = doc & "</LIBRO>" doc = doc & "<LIBRO COD=""11"">" doc = doc & "<TITULO>Como aprobar una oposición</titulo>" doc = doc & "<AUTOR>Marisa Zayas Fornieles</AUTOR>" doc = doc & "<AUTOR>Sergio Lujan Mora</AUTOR>" doc = doc & "<ANYO>1999</ANYO>" doc = doc & "<EDITORIAL>Prensa Editorial</EDITORIAL>" doc = doc & "</LIBRO>" 7

doc = doc & "</BIBLIOTECA>" Set xobj = CreateObject("msxml2.DOMDocument.4.0") ' Hasta que no se termine de cargar ' no se devuelve el control al programa xobj.async = false xobj.loadxml doc MsgBox xobj.text MsgBox xobj.xml xobj.save "prueba.xml" Objeto XMLDOMParseError Este objeto representa un error de análisis producido en el documento XML. Devuelve información detallada sobre el último error de análisis, incluyendo el código de error, el número de línea, la posición en la línea y una descripción en formato texto. Este objeto posee las siguientes propiedades (no posee métodos ni eventos asociados): errorcode: código de error filepos: posición absoluta en el fichero donde se produce el error line: especifica la línea que contiene el error linepos: posición en la línea que contiene el error reason: descripción del error srctext: línea que contiene el error url: URL del documento que contiene el error Validar un documento momento. MSXML permite validar un documento XML mientras se carga o en cualquier Durante la carga del documento 8

El objeto XMLDOMDocument posee la propiedad validateonparse que permite indicar si el analizador tiene que validar el documento. Por ejemplo, el siguiente código carga un documento con la validación activada; si el documento no es válido respecto a su DTD, la propiedad parseerror contendrá un objeto del tipo DOMParseError que especifica el tipo de error que se ha encontrado. Option Explicit Dim xobj, mensaje Set xobj = CreateObject("msxml2.DOMDocument.4.0") ' Hasta que no se termine de cargar ' no se devuelve el control al programa xobj.async = false xobj.validateonparse = true xobj.load "biblioteca-mal2.xml" MsgBox xobj.text MsgBox xobj.xml If xobj.parseerror.errorcode <> 0 Then mensaje = "errorcode: " & xobj.parseerror.errorcode & vbcrlf mensaje = mensaje & "filepos: " & xobj.parseerror.filepos & vbcrlf mensaje = mensaje & "line: " & xobj.parseerror.line & vbcrlf mensaje = mensaje & "linepos: " & xobj.parseerror.linepos & vbcrlf mensaje = mensaje & "reason: " & xobj.parseerror.reason & vbcrlf mensaje = mensaje & "srctext: " & xobj.parseerror.srctext & vbcrlf mensaje = mensaje & "url: " & xobj.parseerror.url & vbcrlf MsgBox mensaje Else MsgBox "El documento " & xobj.url & " es válido" End If 9

Una vez cargado el documento Una vez cargado un documento o mientras se está construyendo, se puede validar contra su DTD en cualquier momento. Option Explicit Dim xobj, errobj, mensaje Set xobj = CreateObject("msxml2.DOMDocument.4.0") ' Hasta que no se termine de cargar ' no se devuelve el control al programa xobj.async = false xobj.validateonparse = false xobj.load "biblioteca-mal2.xml" MsgBox xobj.text MsgBox xobj.xml ' Devuelve un objeto de tipo ParseError Set errobj = xobj.validate If errobj.errorcode <> 0 Then mensaje = "errorcode: " & errobj.errorcode & vbcrlf mensaje = mensaje & "filepos: " & errobj.filepos & vbcrlf mensaje = mensaje & "line: " & errobj.line & vbcrlf mensaje = mensaje & "linepos: " & errobj.linepos & vbcrlf mensaje = mensaje & "reason: " & errobj.reason & vbcrlf mensaje = mensaje & "srctext: " & errobj.srctext & vbcrlf mensaje = mensaje & "url: " & errobj.url & vbcrlf MsgBox mensaje Else MsgBox "El documento " & xobj.url & " es válido" End If 10

Cuando se valida un documento XML con el método validate, el objeto XMLDOMParseError que devuelve sólo contiene las propiedades errorcode y reason, tal como se puede ver en la Figura 3. Figura 3 Objeto XMLDOMNode Este objeto representa un nodo en el documento XML. Las principales propiedades que posee este objeto son: attributes: contiene la lista de atributos. nodetype: especifica el tipo de un nodo. Los principales valores que puede tomar esta propiedad son: 1: elemento 2: atributo 3: texto 8: comentario 10: DOCTYPE nodetypestring: devuelve el tipo de un nodo en forma de cadena. Para los valores anteriores de nodetype devuelve las siguientes cadenas: 1: element 2: attribute 3: text 8: comment 10: documenttype Además, XMLDOMDocument y XMLDOMNode poseen una serie de propiedades y métodos en común, tales como: 11

Propiedades: childnodes: contiene una lista con los nodos hijo. firstchild: contiene el primer nodo hijo. lastchild: contiene el último nodo hijo. nextsibling: contiene el siguiente nodo hermano. parentnode: contiene el nodo padre. previoussibling: contiene el nodo hermano anterior. Métodos: haschildnodes: indica si un nodo contiene nodos hijo. Objeto XMLDOMNodeList Este objeto representa una lista de nodos en un documento XML. Normalmente, una lista de nodos se obtiene con el método selectnodes de los objetos XMLDOMDocument y XMLDOMNode. Las propiedades y métodos principales de este objeto son: Propiedades: length: indica el número de nodos en la lista (colección) Métodos: item: permite un acceso aleatorio a nodos de la lista nextnode: devuelve el siguiente nodo en la lista reset: inicializa el iterador a la lista Por ejemplo, el siguiente código devuelve la lista de elementos (etiquetas) que dependen del nodo raíz del documento XML: Option Explicit Dim xobj, listanodos, nodo Set xobj = CreateObject("msxml2.DOMDocument.4.0") ' Hasta que no se termine de cargar ' no se devuelve el control al programa xobj.async = false xobj.load "biblioteca.xml" 12

Set listanodos = xobj.childnodes For Each nodo In listanodos MsgBox "text: " & nodo.text & vbcrlf & "xml: " & nodo.xml Next Estandarizar el formato de un documento XML Cuando se carga un documento en memoria con el método load, el documento se representa en forma de árbol (no se almacena tal como se lee línea por línea, si no que se transforma a una estructura jerárquica). Cuando posteriormente se almacena el documento con save, la representación en memoria se recorre y se genera el correspondiente fichero según un algoritmo interno. Gracias a este algoritmo, el aspecto visual de distintos documentos XML se puede uniformizar si se cargar y se almacenan sucesivamente. Por ejemplo, el siguiente código solicita el nombre de un documento XML, lo carga y a continuación lo vuelve a grabar con otro nombre: Option Explicit Dim fichin, fichout, xobj ' Fichero de entrada fichin = InputBox("Nombre del fichero XML de entrada:",, "") If fichin = "" Then MsgBox "Hace falta un fichero de entrada" ' Finaliza la ejecución WScript.Quit End If ' Fichero de salida fichout = InputBox("Nombre del fichero XML de salida:",, fichin & ".out.xml") If fichout = "" Then 13

MsgBox "Hace falta un fichero de salida" ' Finaliza la ejecución WScript.Quit End If Set xobj = CreateObject("msxml2.DOMDocument.4.0") ' Hasta que no se termine de cargar ' no se devuelve el control al programa xobj.async = false ' No valida el fichero xobj.validateonparse = false ' Carga el fichero de entrada xobj.load fichin ' Guarda el fichero de salida xobj.save fichout En la Figura 4 se puede ver un ejemplo de documento XML con su contenido sin un formato específico. Cuando este documento se procesa con el analizador de MSXML y posteriormente se almacena, el resultado que se obtiene es el que se muestra en la Figura 5. Como se puede observar, el contenido se ha anidado correctamente y se ha normalizado el empleo de las comillas en los atributos (todo con comillas dobles). 14

Figura 4 15

Figura 5 16