PDA

Ver la Versión Completa : XML desde Internet


webmasterplc
18-05-2013, 07:02:35
Buenas, estoy hgob.veaciendo una aplicación para consultar datos en la pagina www.seniat.gob.ve, la cual se le pasan los parametros metodo get y devuelve un xml, ya lo tengo en un string el siguiente xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<rif:Rif xmlns:rif="rif" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" rif:numeroRif="V148276192"><rif:Nombre>BERTHGENIS SAMUEL DELGADO</rif:Nombre><rif:AgenteRetencionIVA>NO</rif:AgenteRetencionIVA><rif:ContribuyenteIVA>SI</rif:ContribuyenteIVA><rif:Tasa /></rif:Rif>


Alguien me puede orientar cmo manipular los datos y pasarlos a variables diferentes

ecfisa
18-05-2013, 10:43:45
Hola webmasterplc.

Si cadena xml ya está almacenada en una variable de tipo string y no teniendo mas datos en que basarme que la misma cadena que mostras, sólo se me ocurre esto...

En el ejemplo se obtienen los cuatro primeros datos:

...
implementation

uses StrUtils;

procedure PasarDatos(const XMLStr: string; SL: TStrings);
const
DESDE : array[1..4] of string = ('rif:numeroRif="', '<rif:Nombre>',
'rif:AgenteRetencionIVA>', '<rif:ContribuyenteIVA>');
HASTA : array[1..4] of string = ('">', '<' ,'<' , '<');
var
i, p1, p2 : Integer;
begin
for i:= 1 to 4 do
begin
p1 := Pos(DESDE[i], XMLStr) + Length(DESDE[i]);
p2 := PosEx(HASTA[i], XMLStr, p1);
SL.Add(Copy(XMLStr, p1, p2-p1));
end;
end;

// Ejemplo de llamada:
procedure TForm1.Button1Click(Sender: TObject);
var
XMLResult : string;
begin
XMLResult := Obtener_CadenaXML_Desde_SENIAT;
PasarDatos(XMLResult,ListBox1.Items);
end;

Donde Obtener_CadenaXML_Desde_SENIAT sería tu función encargada de obtener la cadena XML; la cuál comentas que ya tenes funcionado.

Saludos. :)

Edito: Tuve que cambiar las etiquetas por que con estas se perdían algunos contenidos de las constantes de cadena.

webmasterplc
18-05-2013, 16:26:47
Hermano gracias Funciona perfecto