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

#11 José G. Samper
25/11/2004 - 00:53 | Informe spam
Hola como estas, tu problema es que estas ligando las cosas, si el web
services es de vfp es asi

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=''
oXMLAdapter=Createobject('xmladapter')
With oXMLAdapter
.ReleaseXML(.T.)
.UTF8Encoded = .F.
.IsDiffGram = .F.
llIncludeBefore = .F.
llChangesOnly = .F.
llIsFile = .F.
lcSchemaLocation = ""
lcAlias='PortalFox'
.AddTableSchema(lcAlias,.F.,Strconv(lcAlias,12,1033),Strconv("FoxData",12,1033),Strconv("",12,1034))
.ToXML("lcXml",lcSchemaLocation,llIsFile,llIncludeBefore,llChangesOnly)
Endwith
Return lcXml
Endproc

Enddefine



y se consume de esta manera

Local loClasePrueba4 As "XML Web Service"
Local loException, lcErrorMsg, loWSHandler
SET STEP ON
Try
Local lcXML
loWSHandler
=Newobject("WSHandler",Iif(Version(2)=0,"",Home()+"FFC\")+"_ws3client.vcx")
loClasePrueba4 =
loWSHandler.SetupClient("http://NETBUZO/jgswebservice/ClaseP...SDL",
"ClasePrueba4", "ClasePrueba4SoapPort")
If Vartype(loClasePrueba4)="O"
lcXML=loClasePrueba4.ProcPrueba4()
Local Xmla As Xmladapter
Xmla=Createobject('xmladapter')
Xmla.ReleaseXML(.T.)
Xmla.LoadXML(lcXML,.F.)
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

Saludos




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


"Angel" escribió en el mensaje
news:
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 zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#12 Angel
25/11/2004 - 11:57 | Informe spam
Muchas gracias por todo y sobre todo por tu paciencia.

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

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
#13 José G. Samper
25/11/2004 - 12:29 | Informe spam
Siempre a la orden, para eso estamos todas aca, para ayudarnos

Saludos


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


"Angel" escribió en el mensaje
news:
Muchas gracias por todo y sobre todo por tu paciencia.


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

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#14 José G. Samper
26/11/2004 - 02:10 | Informe spam
Corrección, Todos. Pequeño error ortografico

Saludos


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


"José G. Samper" escribió en el mensaje
news:
Siempre a la orden, para eso estamos todas aca, para ayudarnos

Saludos


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


"Angel" escribió en el mensaje
news:
Muchas gracias por todo y sobre todo por tu paciencia.


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

PortalFox - NNTP Forum Gateway




Respuesta Responder a este mensaje
#15 allan
26/11/2004 - 20:12 | Informe spam
ya me sonaba extraño :)

Allan Pivaral, Guatemala, CA



El Thu, 25 Nov 2004 21:10:21 -0400, José G. Samper escribió:

Corrección, Todos. Pequeño error ortografico

Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida