WebServices Parte 2 XML



Documentos relacionados
WebServices Parte 1 Los principios

WebServices Parte 1 Los principios

XPath en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

Menús. Gestor de Menús

OrdersCE: Aplicación de ventas y reportes comerciales Manual de instrucciones

WebServices Parte 4 WebServices Personalizados 2

ÍNDICE. Acceso a nivel de agencias...3. Organización por carpetas...4. Descarga de facturas desde el portal...5. Búsquedas de facturas...

Guía de Plantillas de Word

6.1. Conoce la papelera

MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES

El catálogo y los listados

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Conceptos Generales en Joomla


MANUAL DE AYUDA MANEJO DE SHAREPOINT CON GOTELGEST.NET

Hojas de Estilos XSLT en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

Transformación de documentos XML con

GENERAR DOCUMENTOS HTML USANDO LENGUAJE PHP. EJERCICIO RESUELTO EJEMPLO SENCILLO. (CU00733B)

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

GUÍA DEL ADMINISTRADOR DE TI

RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU

efact - WebServices Realizado por: Consorci AOC Versión: 1.1 Fecha: 23/07/2013

Sistemas de Información 12/13 XML (extensible Mark-up Language)

MICROSOFT ACCESS 2010

Nómina Electrónica Manual del Usuario Version 1.0

Tutorial Servicios Web

Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008

extensible Markup Language (XML)

Manual de Uso Web profesional

Sharpdesk V3.5. Guía de instalación: Edición con clave de producto. Versión 1.0

Microsoft Access 2007 (Completo)

InfoPath forma parte del paquete ofimático de Microsoft desde la versión XP (2003).

Gestión Documental con Microsoft Office SharePoint Server 2007 (MOSS) Ignacio López - Ingeniero en Informática Software Architect en Alhambra-Eidos

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

SiteAudit Knowledge Base Programación de Reportes en SiteAudit

Secretaría de Salud. Subsecretaria de Innovación y Calidad. Dirección General de Calidad y Educación en Salud

Construcción de Escenarios

CORREO WEB DE CNICE (Centro Nacional de Información y Comunicación Educativa)

Instrucciones de instalación de IBM SPSS Modeler (licencia concurrente)

Manual de Usuario: Página Web.

EDICIÓN Y FORMATO (II)

BOLETÍN OFICIAL DEL ESTADO

Guía de Usuario. Seguridad Internet. Triara.com SA de CV. Todos los derechos reservados

Sistema de Información de Compras y Contrataciones del Estado (SICE) Gestión y búsqueda de pedidos para compras comunes

MANUAL DE USUARIO FINAL MAPCEL PROFITS

CENTRO DE INVESTIGACIÓN CIENTÍFICA Y DE EDUCACIÓN SUPERIOR DE ENSENADA, BAJA CALIFORNIA Departamento de Cómputo / Dirección de Telemática ÍNDICE

Instructivo Asesoría Básica Comunidad Virtual SharePoint 2010

Un kilobyte (KB) son 1024 bytes, un Megabyte (MB) son 1024 KB, un Gigabyte son 1024 Mb

XSLT.NET XSLT en.net.

FRAMEWORK 2 Creación de Servicios Web

Lectura de datos. Marcelo Reyes Notas sobre gretl 1.8.6cvs

Tienda Virtual Synergy (Parte 2)

Ambiente Virtual de Comercio Electrónico B2B para la Comunidad Virtual de Negocios del departamento del Cauca

HERRAMIENTAS DE ACCESS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Manual del Administrador del Sitio del Gestor de Contenidos de Revistas Científicas de Grupo Aula Médica

Inside. Gestión de Expedientes y Documentos Electrónicos

Principales diferencias entre Excel 2010 y Excel 2013

ESPOCH ESCUELA DE MEDICINA HERNANDEZ MAYRA FORMULAS Y DUNCIONES BASICAS ESPOCH

Tabla de contenido. Manual B1 Time Task

Centro de Capacitación en Informática

Tutorial de Introducción a la Informática Tema 0 Windows. Windows. 1. Objetivos

Análisis de esquemas XML [1]

PORTAL DE TRANSPARENCIA. Manual Transparencia Activa. Portal de Transparencia Página 1

LECCIÓN 10 DASHBOARD. Cómo añadir Gráficos al Dashboard?

Programación Especial: Exportación e Importación de Listas de Precios de Aspel SAE a Microsoft Excel.

MICROSOFT ACCESS 2003

Definición de XQuery.

Manual de usuario. Tramitación de inspecciones periódicas de ascensores: La visión de las empresas conservadoras

Distribuidor de documentos 1. Ventajas. Distribuidor de documentos

Kaldeera Advanced Forms 2009 Guía del usuario

INSTRUCCIONES BÁSICAS DE ACCESO AL PORTAL DEL CLIENTE

Guía de usuario del Administrador CPA BT icomms

WEBSERVICES CON FIRMA DIGITAL Versión 1.2

Introducción a MS Access Diapositiva 1

EUROPIO ENGINE LAB: FORMULARIOS WEB Y TABLAS HTML EN SOLO

DOSIER INFORMATIVO Y EXPLICATIVO

PREPARANDO EL ENTORNO DE DESARROLLO PARA PROGRAMAR EN PHP. DESCARGAR E INSTALAR NOTEPAD++ (CU00808B)

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Usuarios y Permisos. Capítulo 12

Descubra, paso a paso, cómo enviar sus remesas de domiciliaciones a través de Línea Abierta

Manual de suscripción a fuentes RSS.

INGRID Gestión geográfica de activos urbanos y mantenimiento

Sistema de etiquetas Manual de uso

MANUAL DE USUARIO UTILIZACIÓN DE LA EXTRANET

Instalación y configuración de SharePoint (SPS) 2003

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Manual de Usuario. Facturandote Corporativo Mérida, Yucatán, México

Capítulo 8 Ficheros de Configuración

MICROSOFT EXCEL 2007

El proceso de edición digital en Artelope y CTCE

Principios básicos de envío de documentos por

Ofimática Aplicada. Elaborado por: Lic. Ronald Méndez

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

CAMBIAR CUENTA ITUNES A USA

Transcripción:

Autor : Gustavo Velez Para : www.gavd.net/servers/ Fecha : 30-05-2005 Versión : 1.0.0 WebServices Parte 2 XML Para garantizar la integración de WSS y SharePoint con otros tipos de aplicaciones, un sistema de WebService es instalado por defecto con el Portal. Los WebServices proveen una amplia gama de funcionalidad, pero no todas las partes de SharePoint se pueden alcanzar desde sus WebServices. En el caso de que sea necesario realizar alguna función que no exista en una de los WebServices por defecto, siempre es posible crear uno propio. Segunda parte de la serie de artículos sobre WebServices y SharePoint que suministra información sobre como manipular los resultados de XML que un WebService provee. El ejemplo de este articulo continua con el código de la parte 1. WebServices y XML Los WebServices de SharePoint, como todo WebService, están basados en SOAP (Simple Object Access Protocol). La mayoría de los métodos de los WebServices instalados por defecto en SharePoint retornan un documento de XML, con un NameSpace asociado a el, lo que permite el uso de las clases para XML de DotNet. Cuando este no es el caso (vea el ejemplo en este articulo), es posible o usar una transformación, o complementar el URI para poderlo tratar como un documento XML completo. Aplicación para Windows (Continuación) La primera parte de la serie de artículos daba instrucciones para hacer un programa de Windows que puede leer las plantillas disponibles en un sitio, utilizando el correspondiente WebService. La continuación del código muestra como encontrar las Listas de un sitio. 1 Amplíe la interfase de la aplicación, de tal forma que el usuario tenga un botón para encontrar las Listas del sitio definido, y un TextBox para definir el nombre de la Lista de la que se quieren ver los Elementos

2 En el evento del botón Listas, primero hay que añadir código para definir una instancia del WebService y para darle las credenciales del usuario: wv01.lists MyListsService = new SpsWebService_01.wv01.Lists(); MyListsService.Credentials = new NetworkCredential(this.txtUsuario.Text, this.txtcontrasena.text, this.txtdominio.text); 3 Haga el WebService independiente del URL que se definió en la referencia, de tal forma que se pueda usar para encontrar resultados de otros sitios: MySitesService.Url = this.txturl.text + "_vti_bin/sites.asmx"; 4 Una referencia al método GetListCollection devuelve la información sobre la colección de Listas del sitio en la forma de una colección de XmlNode, que se puede leer usando un estamento foreach MyListsService.Url = this.txturl.text + "_vti_bin/lists.asmx"; XmlNode MyNode = MyListsService.GetListCollection(); foreach(system.xml.xmlnode MyXmlnode in MyNode) this.txtresultado.text += MyXmlnode.Attributes["Title"].Value + "\r\n"; 5 Cuando el usuario copia el nombre de una de las listas en el espacio indicado, puede hacer uso de tres botones para encontrar los elementos de la lista en tres maneras diferentes: como XML, usando un DataSet o utilizando XPath. 6 Para ver el resultado de la búsqueda de los elementos como XML, primero se definen algunas variables que contendrán la consulta, las opciones de la consulta y los campos que se desean ver. En el ejemplo se desean ver todos los campos del resultado, y todos los resultados de la Lista, por lo que las variables son inicializadas, pero no contienen ningún tipo de filtro.

XmlDocument MyXmlDoc = new XmlDocument(); XmlNode MyNodeQuery = MyXmlDoc.CreateNode(XmlNodeType.Element,"Query",""); XmlNode MyNodeViewFields = MyXmlDoc.CreateNode(XmlNodeType.Element,"ViewFields",""); XmlNode MyNodeQueryOptions = MyXmlDoc.CreateNode(XmlNodeType.Element,"QueryOptions",""); XslTransform myxslt = new XslTransform(); MemoryStream mymemstream = new MemoryStream(); El método GetListItems es el que provee los resultados deseados: XmlNode myxmlnode = MyListsService.GetListItems(this.txtList.Text, null, MyNodeQuery, MyNodeViewFields, null, MyNodeQueryOptions); El resultado es guardado en un XmlDocument, y un StreamReader se encarga de convertirlo en texto leíble para la interfase: myxslt.load("../../a.xslt"); MyXmlDoc.LoadXml("<?xml version='1.0'?>" + myxmlnode.outerxml); myxslt.transform(myxmldoc, null, mymemstream, null); mymemstream.position = 0; StreamReader mystreamreader = new StreamReader(myMemStream); this.txtresultado.text += mystreamreader.readtoend(); La transformación XSLT contenida en un archivo separado convierte el texto de XML en una forma que pueda ser interpretada más fácilmente por los usuarios. La transformación solamente cambia la sangría, sin cambiar la forma en que los datos son presentados: <?xml version = "1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output method="xml" indent="yes"/> <xsl:template match="node() @*"> <xsl:copy> <xsl:apply-templates select="node() @*"/> </xsl:copy> </xsl:template> </xsl:stylesheet>

7 Los datos devueltos por el WebService se pueden introducir en un DataSet para poderlos usar en una DataGrid, o cualquier otro control que aplique la interfase de IBind. En este caso, primero hay que crear un XmlDataDocument y un DataSet que utilizara sus meta-datos: XmlDataDocument myxmldatadocument = new XmlDataDocument(); DataSet MyDataSet = myxmldatadocument.dataset; Luego de obtener el XmlNode utilizando el método GetListItems de la misma forma que en el punto anterior, un XmlTextReader provee el contenido al DataSet y un bucle puede leer los datos en la pantalla (aquí se puede usar el DataSet para otras cosas, como por ejemplo, para llenar una DataGrid ): XmlTextReader MyXmlTextReader = new XmlTextReader(myXmlNode.OuterXml, XmlNodeType.Element, null); MyDataSet.ReadXml(MyXmlTextReader); foreach(datarow myrow in MyDataSet.Tables[1].Rows) this.txtresultado.text += myrow["ows_basename"] + " - " + myrow["ows_serverurl"] + "\r\n"; Este método crea dos tablas in de DataSet: la primera conteniendo la cantidad de records en la Lista, y la segunda conteniendo los records mismos. Cada columna de listas utiliza un prefijo ows_, como se puede ver en el resultado del XML, que es necesario de respetar para poder leer los datos de la DataSet. 8 Si es necesario leer los resultados del WebService usando directamente XML, luego de construir el XMLNode con los resultados de GetListItems como se indica en anteriormente, se puede crear una consulta de XPath que entregue todos los resultados sin filtrar, de la forma: string MyXpathQuery = "//*[local-name() = 'data' and namespace-uri() = 'urn:schemas-microsoftcom:rowset']/*[local-name() = 'row' and namespace-uri() = '#RowsetSchema']"; Y luego navegar por todos los nudos usando un XmlNodeList :

XmlNodeList MyNodes = myxmlnode.selectnodes(myxpathquery); for(int i = 0; i < MyNodes.Count; i++) this.txtresultado.text += MyNodes[i].Attributes["ows_BaseName"].Value + " - " + MyNodes[i].Attributes["ows_BaseName"].Value + "\r\n"; Note la diferencia en la ruta al documento, en comparación con el uso de una DataSet: porque aquí se usa un filtro genérico en la consulta, las rutas a los documentos no aparecen en la pantalla. Hay varias otras formas de utilizar el documento XML, por ejemplo usando consultas más refinadas que entreguen solamente los campos necesarios, o utilizar un XPathNavigator o, inclusive, utilizar una XmlSerialization. Tenga en cuenta que un DataSet puede ser un objeto bastante grande que puede usar bastante memoria de los servidores y que los métodos de XML no son fáciles de utilizar, en el momento de tomar una decisión sobre el método a utilizar. El último método, utilizando XML también puede utilizar bastante memoria usándolo en la forma del ejemplo, pero puede ser la manera indicada de trabajar si solamente se necesita encontrar uno de los ítems de la lista. En este caso, la consulta y el método a utilizar son: string MyXpathQuery = "//*[@ows_title='thanksgiving']" XmlNode MyNode = myxmlnode.selectsinglenode(myxpathquery)