trabajando xmladapter

12/11/2004 - 10:49 por Angel | Informe spam
hola, que tal? Os escribo para ver si me podeis ayudar. Mi problema es que
estoy realizando un servicio web xml y necesito saber como a partir de un
archivo con extension .xml enviarlo a otro programa que lo intreprete. Lo
que yo he hecho es:

cRedist=FILETOSTR("myxmlfile.xml")
XMLTOCURSOR(STRconv(cRedist,11),"curCustomer",4)

loxmladapter=createobject("XMLAdapter")
loxmladapter.AddTableSchema("curCustomer")
loxmlAdapter.PreserveWhiteSpace= .T.
loxmladapter.UTF8Encoded=.t.
loxmlAdapter.FormattedOutput=.F.
loxmladapter.ToXML("envio")
loxmlAdapter.ReleaseXML(.f.)

loxmladapter2=createobject("XMLAdapter")
loxmladapter2.LoadXML(envio)
lcAlias=loxmladapter2.tables.Item(1).alias
SELECT (lcAlias)
BROWSE
y me sale el siguiente error:

XML Parse error:node "seller"
xml=<seller><gln>23</gln><postcode>7</postcode>
pude ser por la codificacion del archivo??, o por...?

muchas gracias.un saludo.Angel

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa

Preguntas similare

Leer las respuestas

#6 José G. Samper
18/11/2004 - 02:19 | Informe spam
Hola como estas, que quieres hacer exactamente para ayudarte de mejor manera

SAludos


________________________
José G. Samper C.
MCAD/MCSD .Net
http://www.FoxyNet.Net


"Angel" escribió en el mensaje
news:
Hola José como estas, he estado realizando un web service que envia un
objeto XMLDOM como me indicaste la otra vez, pero tengo una duda y es que
si añado al objeto el cursor "curCustomers":

OPEN DATABASE "C:\Archivos de programa\Microsoft Visual FoxPro
8\Samples\Northwindorthwind.dbc"
USE customers
SELECT * ;
FROM customers ;
WHERE country LIKE "Germany%" ;
INTO CURSOR curCustomers

al recibirlo el cliente que operaciones tiene que hacer para visualizar
los datos que se envia en XMLDOM.

muchas gracias,un saludo,Angel


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#7 Angel
18/11/2004 - 08:15 | Informe spam
hola,que tal?? lo que quiero es crear un servicio web en visual fox que
devuleva un objeto como explicaste anteriormente, y ademas crear un
cliente en visual fox que utilice dicho servicio web. Mi duda es que tipo
de variable(String,Objeto,...) tiene

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
#8 Angel
18/11/2004 - 08:20 | Informe spam
hola,que tal?? lo que quiero es crear un servicio web en visual fox que
tenga un metodo que devuleva un objeto como explicaste
anteriormente(XMLDOM), y ademas crear un cliente en visual fox que utilice
dicho metodo del servicio web. Mi duda es que tipo de
variable(String,Objeto,...) tiene que devolver dicho metodo.

Espero que me hayas entendido.gracias por tu paciencia.Un saludo,
Angel

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
#9 José G. Samper
21/11/2004 - 19:45 | Informe spam
Hola como estas y disculpa la tardanza , que quieres hacer. Explicame de una
forma muy general que quieres hacer para poderme dar una mejor idea de lo
que deseas obtener

Saludos



________________________
José G. Samper C.
MCAD/MCSD/MCDBA
http://www.FoxyNet.Net


"Angel" escribió en el mensaje
news:
hola,que tal?? lo que quiero es crear un servicio web en visual fox que
tenga un metodo que devuleva un objeto como explicaste
anteriormente(XMLDOM), y ademas crear un cliente en visual fox que utilice
dicho metodo del servicio web. Mi duda es que tipo de
variable(String,Objeto,...) tiene que devolver dicho metodo.

Espero que me hayas entendido.gracias por tu paciencia.Un saludo,
Angel


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#10 Angel
23/11/2004 - 13:27 | Informe spam
hola, como estas,te cuento lo que te pasa:

Quiero hacer un web service en visual fox para que trabaje en area local,
el cual consta de un metodo(ProcPrueba4) que devuelve un objeto:

DEFINE CLASS ClasePrueba4 AS Session OLEPUBLIC
PROCEDURE ProcPrueba4 as string
LOCAL oXMLAdapter AS XMLADAPTER,lcXml AS STRING
LOCAL loXMLAdapter,ada AS XMLADAPTER
LOCAL loDOM, loData, loSchema, loNode
LOCAL x
CREATE CURSOR PortalFox (ID i, nombre c(250))
INSERT INTO PortalFox (ID,nombre) VALUES (1,'PortalFox')
lcXml=''"
&&&Creamos el Objeto XMLAdapter
oXMLAdapter=CREATEOBJECT('xmladapter')
WITH oXMLAdapter
.RELEASEXML(.T.) &&& limpiamos el XML por si este objeto fue usado para
interpretar otro xml
.UTF8ENCODED = .F. &&& Colocamos UTF8Encoded en Falso para no tener
problemas con los acentos al momento de interpretar el XML
.ISDIFFGRAM = .F.
llIncludeBefore = .F.
llChangesOnly = .F.
llIsFile = .F.
lcSchemaLocation = ""
lcAlias='PortalFox'
&&& Invocamos este metodo por cada tabla que necesitemos incluir en el
Dataset

.ADDTABLESCHEMA(lcAlias,.F.,STRCONV(lcAlias,12,1033),STRCONV("FoxData",12,1033),STRCONV("",12,1034))
&&& convertimos los datos contenidos en las tablas agregadas al esquema a
Xml
.TOXML("lcXml",lcSchemaLocation,llIsFile,llIncludeBefore,llChangesOnly)
ENDWITH

loXMLAdapter = CREATEOBJECT('xmladapter')
loXMLAdapter.LOADXML(lcXML)
&&Buscamos la referencia del objeto XMLDOM
loDOM = loXMLAdapter.IXMLDOMELEMENT
loNode = loDOM.childNodes.ITEM(0)
IF loNode.nodeName == "xsd:schema"

loSchema = loNode
loData = loDOM.childNodes.ITEM(1)
ELSE
loSchema = loDOM.childNodes.ITEM(1)
loData = loNode
ENDIF
x = loSchema.XML + loData.XML

RETURN x
ENDPROC
ENDDEFINE

y he creado un cliente de dicho Web Service que ejecute su metodo:


LOCAL loClasePrueba4 AS "XML Web Service"
ClasePrueba4 , ClasePrueba4SoapPort
LOCAL loException, lcErrorMsg, loWSHandler
TRY
LOCAL lcXML

loWSHandler NEWOBJECT("WSHandler",IIF(VERSION(2)=0,"",HOME()+"FFC\")+"_ws3client.vcx")
loClasePrueba4 = loWSHandler.SetupClient("http://ROLAND/Servicios
Web/ClasePrueba4.wsdl", "ClasePrueba4", "ClasePrueba4SoapPort")

lcXML=loclaseprueba4.ProcPrueba4
If Vartype(lcXML)="0"

*Separamos el esquema y el XML del Dataset devuelto.
loSchema = lcXML.Item(0)
lxXML = lcXML.Item(1)
* Creamos un objeto XmlAdapter
Xmla=Createobject('xmladapter')
Xmla.ReleaseXML(.T.)

If Vartype(lxXML)="O" And Vartype(loSchema)="O"

Xmla.Attach(lxXML, loSchema)
ENDIF
*Recorremos las tablas del XMLADAPTER y las convertimos en cursores
For iLoop = 1 To Xmla.Tables.Count
lcAlias = Xmla.Tables.Item(iLoop).Alias
If Used(lcAlias)
Use In (lcAlias)
Endif
Xmla.Tables.Item(iLoop).ToCursor()
Select(lcAlias)
browse
ENDFOR
Endif
CATCH TO loException
lcErrorMsg="Error: "+TRANSFORM(loException.Errorno)+" -
"+loException.Message
DO CASE
CASE VARTYPE(loClasePrueba4)#"O"
* Handle SOAP error connecting to web service
CASE !EMPTY(loClasePrueba4.FaultCode)
* Handle SOAP error calling method
lcErrorMsg=lcErrorMsg+CHR(13)+loClasePrueba4.Detail
OTHERWISE
* Handle other error
ENDCASE
MESSAGEBOX(lcErrorMsg)
FINALLY
ENDTRY

Despues de todo este rollo mi problema es que lo que recibo del web
Service no es un objeto,es decir, no entre en " If Vartype(lcXML)="0" ".
Si elimino este if me da un error que dice "lcXML no es un objeto".¿Donde
me estoy equivocando?

Muchas gracias,Angel

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida