Hemos configurado el webservice para que devuelva los datos en el formato deseado, XML o JSON, así quien lo consuma podrá elegir cómo quiere los datos. En eCliente utilizamos .NET, por lo que se hace más sencillo obtener los resultados en un XML (directamente creamos un DataSet a partir de él se hace mucho más fácil su gestión), y en las apps lo consumimos con JSON.
En ambos casos nos hemos encontrado con un problema: tenemos registros que tienen caracteres que, bien hacen que se rompan el XML, o bien el HTML, debido a que contienen caracteres no permitidos para estos formatos.
Para evitar este problema, hemos creado una función escalar en SQL Server que nos reemplaza los caracteres no deseados para que el XML/JSON sea correcto. La función es la siguiente:
USE [BaseDatos] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[CampoToHTML] (@texto varchar(256)) returns varchar(max) begin declare @resul varchar(max) set @resul = @texto set @resul = REPLACE(@resul, char(34), char(39)) set @resul = REPLACE(@resul, 'ñ' COLLATE Latin1_General_CS_AS,'n') set @resul = REPLACE(@resul, 'á' COLLATE Latin1_General_CS_AS,'a') set @resul = REPLACE(@resul, 'é' COLLATE Latin1_General_CS_AS,'e') set @resul = REPLACE(@resul, 'í' COLLATE Latin1_General_CS_AS,'i') set @resul = REPLACE(@resul, 'ó' COLLATE Latin1_General_CS_AS,'o' ) set @resul = REPLACE(@resul, 'ú' COLLATE Latin1_General_CS_AS,'u') set @resul = REPLACE(@resul, 'Ñ' COLLATE Latin1_General_CS_AS,'N') set @resul = REPLACE(@resul, 'Á' COLLATE Latin1_General_CS_AS,'A') set @resul = REPLACE(@resul, 'É' COLLATE Latin1_General_CS_AS,'E') set @resul = REPLACE(@resul, 'Í' COLLATE Latin1_General_CS_AS,'I') set @resul = REPLACE(@resul, 'Ó' COLLATE Latin1_General_CS_AS,'O') set @resul = REPLACE(@resul, 'Ú' COLLATE Latin1_General_CS_AS,'U') set @resul = REPLACE(@resul, '&' COLLATE Latin1_General_CS_AS,'y') return @resul ENDDe esta forma, la consulta SQL la haríamos de la siguiente forma:
SELECT id,dbo.CampoToHTML(apellidos) FROM ClientesEsto es todo.
0 comentarios :
Publicar un comentario