Page 1 of 1

Creating an XML file

Posted: Wed Jul 26, 2017 7:45 pm
by Natter
Hi, all !

I made a request to the site (httpxmlreques). As a result, the ResponseXML property is an XML object. Is it possible to save the object as XML file ?

Re: Creating an XML file

Posted: Wed Jul 26, 2017 8:12 pm
by TimStone
nFileHandle := FCreate( "MyDoc.xml", 0 )
// cXml would be your response from the server
FWrite( nFileHandle, cXml )
FClose( nFileHandle )

This should work ....

Re: Creating an XML file

Posted: Thu Jul 27, 2017 6:50 am
by Natter
Tim, thank you for your help. But if you save the object in ResponseXML XML file using fwrite, the length of the file equal to 0. Perhaps you first need to convert the ResponseXML object to a string, but I don't know how to do it.

Re: Creating an XML file

Posted: Thu Jul 27, 2017 11:24 am
by darioflores
Natter wrote:Hi, all !

I made a request to the site (httpxmlreques). As a result, the ResponseXML property is an XML object. Is it possible to save the object as XML file ?
Try ResponseXML:xml

Re: Creating an XML file

Posted: Thu Jul 27, 2017 12:33 pm
by EduardoSP6
Try this:

MEMOWRIT('c:\response.xml' , cXML , .F.)

Re: Creating an XML file

Posted: Thu Jul 27, 2017 12:51 pm
by gkuhnert
If you have an (x)harbour object from class TXml, say oXml, you can make a string by calling:
oXml:ToString( nStyle )
works too, if you don't pass a parameter for style.

The source of the class is in \source\rtl\txml.prg, if you've downloaded (x)harbour source code.
There even is a Method Write, which takes two parameters: fHandle and nStyle
So if you've created a new file and have the handle in fHandle, you could simply call:
oXml:Write( fHandle )

Re: Creating an XML file

Posted: Thu Jul 27, 2017 2:15 pm
by Natter
Thank you all. Understood. Object responceXML empty (the site does not support header to text/xml) so the persistent xml file was also empty.

Re: Creating an XML file

Posted: Thu Jul 27, 2017 2:36 pm
by TimStone
First, I create an xml document: LOCAL oXmlDoc := TXmlDocument():new( )
I also use from windows: iDLL := LoadLibrary( "wininet.dll" )

Then I create the XML I am going to send them. It's a string called cXML ... contains the format they want.
Next, I submit it:
IF .NOT. oHttp:open()
MsgAlert( "Connection error:", oHttp:lastErrorMessage( ) )
RETURN
ENDIF
oHttp:Post( cXml)
cRet := oHttp:readAll( )
oHttp:close()

The value cRet can then be parsed, or written to a file.

At least, it works fine for me this way but may vary depending on how the resource sends you the files.

Re: Creating an XML file

Posted: Fri Jul 28, 2017 8:59 am
by driessen
Tim,

I make XML-files the way you suggested (usingFWRITE, etc;).
It works perfectly.

Re: Creating an XML file

Posted: Fri Jul 28, 2017 3:35 pm
by TimStone
Michel,

I've been using XML for a couple of years, and now JSON. I usually will be able to deal with most operations in memory by creating an XML formatted output, then parsing the reply. When I need the actual file to be saved, FWRITE has worked fine and the resulting files can be read easily in a browser.

Tim