Thanks Steve. We have a series of wrappers for using ObjectTools as well. That approach seems a good way to get the data back into A4D as a single unit of parsable arrays.
Didn't think of the JSON idea, that's a good one. As far as updating your structure, that's a bummer. Cause David Adams wrote a technote a few years back with XMLTreeWalker that has all the wrappers one might need for parsing, mixing, sorting XML data. I think we'll use it to parse the xml into arrays then send it over to A4D. Interesting about the QB rubygem. I have looked at this myself since we use QB and I wanted to a way to send invoices to clients, pulling timesheets and changing the whole package into PDF with something like prawn. But I found I was quickly in deep with the QB gem, I just couldn't get it to work for me. I would be interested in hearing your progress. I'll send you a private note on it. I'll keep you posted with our solution. Thanks, Michael Check On Wed, Oct 20, 2010 at 6:26 PM, Steve Alex <[email protected]> wrote: > > On Oct 20, 2010, at 10:59 AM, Michael Check wrote: > >> So along the line of my previous question regarding SOAP, we're >> getting XML data back from a server and need to get it to be used in >> A4D. Naturally, I think rowsets. So I'm looking for the best path >> (or tools that will help jump the gaps) to get the SOAP response in >> XML blob format, into a Rowset. >> >> Of course, what I'd like to do is create a map (similar to the RowSet >> examples in the docs) with the data columsn to be returned and send >> those into my library, with a Rowset returned. >> >> Here's what I'm thinking now: >> In A4D Create text map of needed column names that correspond to >> remote server fields >> Send into wrapper method that processes SOAP Client request to their server >> Get back XML Blob of data >> Parse XML into columns names and data (as separate arrays?) >> Send back to A4D (best way? Big blob of arrays? ObjectTools?) >> Send into RowSet library. >> Voila! (Sort of) >> >> Any suggestions? Anyone done this before? > > On Oct 20, 2010, at 11:48 AM, Aparajita Fishman wrote: > >> Active4D can't unpack a blob of arrays. I would create two arrays: array of >> column names and array of pointers to the process data arrays. Pass those to >> Active4D, it can access the data through the pointers. > > > I may be faced with the same type of challenge in interfacing with Quickbooks > using the SDK, which only speaks XML. I've done this type of conversion, > saving, retrieving, etc using a couple different methods. I have not had to > deal with rowsets (or an array of object), but beside Aparajita's suggestion > I'll talk about a couple other approaches I've tried. > > ObjectTools. Since I extensively use collections, not being able to stored > nested collections or arrays in collection to blob has been a bummer. You > have to write a few 4D ObjectTools wrapper methods t0 get and put the > different types (some process variables also needed). I then wrote a couple > of Active4D library methods ObjectToCollection and CollectionToObject that > allows you to save a collection in an OT blob and retain arrays and embedded > collection. It is limited to "sane" data types. > > JSON. Parse the XML into a collection then convert the collection to JSON > with the JSON library (or directly into JSON). Store the text. Again, > depending on the complexity, I wrote a JsonParseSimple library method that > parses the JSON text into a collection. > > I never learned how to use the 4D XML library because I couldn't call it from > Active4D. I tried to avoid wrapper methods since I could never count on my > 4D desktop developer to release new structures when I needed them. I wrote my > own XML parse methods in Active4D, but again they were limited to simple, > known XML structures. > > The problem with the collection approach and rowsets is sorting, if that is > important. > > If the QuickBooks project get a go ahead, I may have a head start since I > will probably use a RubyGem that interfaces with QuickBooks and can return, > XML, JSON or whatever - but that is throwing another process in the mix. > > Steve Alex > > PS You can contact me privately if your interested in any of the code > mentioned about and I'll post it on github. > > > _______________________________________________ > Active4D-dev mailing list > [email protected] > http://mailman.aparajitaworld.com/mailman/listinfo/active4d-dev > Archives: http://mailman.aparajitaworld.com/archive/active4d-dev/ > _______________________________________________ Active4D-dev mailing list [email protected] http://mailman.aparajitaworld.com/mailman/listinfo/active4d-dev Archives: http://mailman.aparajitaworld.com/archive/active4d-dev/
