revXML to Datagrid
Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller, robinmiller
-
- VIP Livecode Opensource Backer
- Posts: 243
- Joined: Sun Dec 06, 2009 12:24 am
- Location: Fredericktown, MO
- Contact:
revXML to Datagrid
Hello, all!
I spent the entire day playing with the new revXML external support for iOS.
The good news is it worked for me!!! Woohoo!!!
I am able to download a php-generated XML document from my server and parse the tree using revXML.
Has anyone seen or have experience with using XML to populate a Datagrid? I've checked the forums, but didn't find it. I've looked at DataGrid lessons on runrev.com, but they seem to be sqlite-specific...
Any info would be appreciated!
Thanks,
Todd
I spent the entire day playing with the new revXML external support for iOS.
The good news is it worked for me!!! Woohoo!!!
I am able to download a php-generated XML document from my server and parse the tree using revXML.
Has anyone seen or have experience with using XML to populate a Datagrid? I've checked the forums, but didn't find it. I've looked at DataGrid lessons on runrev.com, but they seem to be sqlite-specific...
Any info would be appreciated!
Thanks,
Todd
-
- VIP Livecode Opensource Backer
- Posts: 1005
- Joined: Sat Apr 08, 2006 3:06 pm
- Location: Overland Park, Kansas
- Contact:
Re: revXML to Datagrid
Hi Todd,
To use XML with a data grid you just need to convert the XML to an array that you can assign to the dgData. This is what is going on in the lesson that converts a SQL cursor to an array:
http://lessons.runrev.com/spaces/lesson ... Grid-Array
You can use the revXML routines to iterate through the nodes in your XML tree and generate the array. I don't like using them myself so I wrote some handlers that convert XML to LiveCode arrays and vice versa. I then work with the array and convert back to XML when I'm done. You can find them in a stack I posted to RevOnline:
http://revonline2.runrev.com/stack/571/XMLAndArrays
Here is how you might use the handlers to create an array that you can assign to the dgData (untested).
To use XML with a data grid you just need to convert the XML to an array that you can assign to the dgData. This is what is going on in the lesson that converts a SQL cursor to an array:
http://lessons.runrev.com/spaces/lesson ... Grid-Array
You can use the revXML routines to iterate through the nodes in your XML tree and generate the array. I don't like using them myself so I wrote some handlers that convert XML to LiveCode arrays and vice versa. I then work with the array and convert back to XML when I'm done. You can find them in a stack I posted to RevOnline:
http://revonline2.runrev.com/stack/571/XMLAndArrays
Here is how you might use the handlers to create an array that you can assign to the dgData (untested).
Code: Select all
-- Sample XML
-- Assume this XML is in a variable named theXML.
<myxml>
<node>value 1</node>
<node>value 2</node>
<node>value 3</node>
</myxml>
Code: Select all
-- Convert xml to array. Store data in array as UTF8.
put ConvertXMLToArray(theXML, "UTF-8") into theArray -- handler in RevOnline stack
-- Convert to an array that can be assigned to the dgData of a Data Grid (numerically indexed).
put SortArrayKeysWithXMLOrdering(theArray["myxml"]) into theKeys -- handler in RevOnline stack
put 0 into i
repeat for each line theKey in theKeys
add 1 to i
put theArray["myxml"][theKey] into theData[i]
end repeat
set the dgData of group "DataGrid" to theData
Trevor DeVore
ScreenSteps - https://www.screensteps.com
LiveCode Repos - https://github.com/search?q=user%3Atrevordevore+topic:livecode
LiveCode Builder Repos - https://github.com/search?q=user%3Atrevordevore+topic:livecode-builder
ScreenSteps - https://www.screensteps.com
LiveCode Repos - https://github.com/search?q=user%3Atrevordevore+topic:livecode
LiveCode Builder Repos - https://github.com/search?q=user%3Atrevordevore+topic:livecode-builder
-
- Posts: 1201
- Joined: Sun Apr 24, 2011 2:17 am
Re: revXML to Datagrid
If anyone has a working sample I'd appreciate having it uploaded here so we can see it working.
I have a fair go at this a number of times but can't get the array to load into the grid.
I'm pretty sure its the column names on the Datagrid MUST be preset and match the Key names in the array.
I think the code behind the DataGrid needs to be updated to add the column names found in the array.
Anyone?
I have a fair go at this a number of times but can't get the array to load into the grid.
I'm pretty sure its the column names on the Datagrid MUST be preset and match the Key names in the array.
I think the code behind the DataGrid needs to be updated to add the column names found in the array.
Anyone?
All my best,
Barry G. Sumpter
Deving on WinXP sp3-32 bit. LC 5.5 Professional Build 1477
Android/iOS/Server Add Ons. OmegaBundle 2011 value ROCKS!
2 HTC HD2 Latest DorimanX Roms
Might have to reconsider LiveCode iOS Developer Program.
Barry G. Sumpter
Deving on WinXP sp3-32 bit. LC 5.5 Professional Build 1477
Android/iOS/Server Add Ons. OmegaBundle 2011 value ROCKS!
2 HTC HD2 Latest DorimanX Roms
Might have to reconsider LiveCode iOS Developer Program.
Re: revXML to Datagrid
Hi Barry,
Please post your script(s), we try hard but cannot read other peoples mind (yet).
What about the scripts that Trevor (who invented the DataGrid btw.!)?
Don't they work for you?
Best
Klaus
what exactrly happens?BarrySumpter wrote:... but can't get the array to load into the grid.
Please post your script(s), we try hard but cannot read other peoples mind (yet).
What about the scripts that Trevor (who invented the DataGrid btw.!)?
Don't they work for you?
Not necessarily!BarrySumpter wrote:I'm pretty sure its the column names on the Datagrid MUST be preset and match the Key names in the array.
No idea, but I guess not!BarrySumpter wrote:I think the code behind the DataGrid needs to be updated to add the column names found in the array.
Best
Klaus
-
- VIP Livecode Opensource Backer
- Posts: 1005
- Joined: Sat Apr 08, 2006 3:06 pm
- Location: Overland Park, Kansas
- Contact:
Re: revXML to Datagrid
Yes, when setting the dgData property the column names must already exist in the data grid.BarrySumpter wrote:I'm pretty sure its the column names on the Datagrid MUST be preset and match the Key names in the array.
No, this is by design. It is sometimes necessary to have keys in the dgData array that have no visual column associated with them. In addition, the order of the columns would not necessarily end up being the order you would want if the data grid did this automatically.BarrySumpter wrote:I think the code behind the DataGrid needs to be updated to add the column names found in the array.
You can create columns by setting the dgProp["columns"] of group "DataGrid" to a line delimited list of your columns.
Trevor DeVore
ScreenSteps - https://www.screensteps.com
LiveCode Repos - https://github.com/search?q=user%3Atrevordevore+topic:livecode
LiveCode Builder Repos - https://github.com/search?q=user%3Atrevordevore+topic:livecode-builder
ScreenSteps - https://www.screensteps.com
LiveCode Repos - https://github.com/search?q=user%3Atrevordevore+topic:livecode
LiveCode Builder Repos - https://github.com/search?q=user%3Atrevordevore+topic:livecode-builder
-
- Posts: 1201
- Joined: Sun Apr 24, 2011 2:17 am
Re: revXML to Datagrid
Thanks for the replies.
LOL.
Yeah that clarifies things I already know.
Feeling a bit better now after going to sleep unsatisfied after a very confusing day.
i.e. doughting my intellegence yet again. (happens more often that I'd like)
As a beginner I would prefer to have actual working samples.
I can make reasonable deductions myself then when nothing seems to work I ask.
----
Working with a datagrid and an array - NOT from XML
I'd like to load the grid with my array using field names from item x as column headers or OK keyNames.
Then later, when I want to play with the column properties I'll research how to do it.
Or later when I know how to use the datagrid properly
I can then load the columnheading properties then the griddata.
Like hiding my data by making a certain columnWidth 0 etc.
----
I've kinda given up on the XML to datagrid.
Or come to the realizatoin that MY XML tree data doesn't really fit in with a datagrid solution
To much complexity and no actual working example was a hard learn.
----
with my XML tree data - a large amount does NOT repeat so having heading at all doesn't work.
Which wouldn't work with a dataGrid
Then the next part DOES have monthly data and then daily data that I need to stay in the month/day order given in the XML tree data.
Which should work well with a dataGrid.
----
If anyone at all has a working example no matter how small or simple could you please post it?
I'm trying to use the XML to Array but the array comes out out of XML order.
i.e. I don't need it to sort the array.
I need the array in the exact order the XML was presented.
Also, that script working with the keys has nothing to work with and returns nothing.
So It's just theArray that I'm working with at the mo.
tia
LOL.
Yeah that clarifies things I already know.
Feeling a bit better now after going to sleep unsatisfied after a very confusing day.
i.e. doughting my intellegence yet again. (happens more often that I'd like)
As a beginner I would prefer to have actual working samples.
I can make reasonable deductions myself then when nothing seems to work I ask.
----
Working with a datagrid and an array - NOT from XML
I'd like to load the grid with my array using field names from item x as column headers or OK keyNames.
Then later, when I want to play with the column properties I'll research how to do it.
Or later when I know how to use the datagrid properly
I can then load the columnheading properties then the griddata.
Like hiding my data by making a certain columnWidth 0 etc.
----
I've kinda given up on the XML to datagrid.
Or come to the realizatoin that MY XML tree data doesn't really fit in with a datagrid solution
To much complexity and no actual working example was a hard learn.
----
with my XML tree data - a large amount does NOT repeat so having heading at all doesn't work.
Which wouldn't work with a dataGrid
Then the next part DOES have monthly data and then daily data that I need to stay in the month/day order given in the XML tree data.
Which should work well with a dataGrid.
----
If anyone at all has a working example no matter how small or simple could you please post it?
I'm trying to use the XML to Array but the array comes out out of XML order.
i.e. I don't need it to sort the array.
I need the array in the exact order the XML was presented.
Also, that script working with the keys has nothing to work with and returns nothing.
So It's just theArray that I'm working with at the mo.
tia
Code: Select all
on mouseUp
-- I have no control over my data
-- some days it works without mods
-- other days it contains special characters and throws LiveCode XML routines off.
-- put field "txtField" into theXML
local tPreferencesData, tResult
put url ("file:" & "c:/myXML.xml") into tXMLData
put the result into tResult
if tResult is not empty then
answer error "Failed to read XML Data file at location: " & "c:/myXML.xml"
return empty
end if
-- Remove non-breaking spaces -
replace " " with empty in tXMLData
-- Remove Delay tagged lines - always corrupted
Put wordOffset("<delay",tXMLData) into tWordStartNum
Put wordOffset("delay>",tXMLData) into tWordEndNum
Delete word tWordStartNum to tWordEndNum of tXMLData
--filter tXMLData without "*<delay*</delay>" -- this works as well - thanks dglass
put tXMLData into theXML
----
replace cr with empty in theXML
-- Convert xml to array. Store data in array as UTF8.
put ConvertXMLToArray(theXML, "UTF-8") into theArray -- handler in RevOnline stack
-- Convert to an array that can be assigned to the dgData of a Data Grid (numerically indexed).
-- put SortArrayKeysWithXMLOrdering(theArray["myxml"]) into theKeys -- handler in RevOnline stack
-- put 0 into i
-- repeat for each line theKey in theKeys
-- add 1 to i
-- put theArray["myxml"][theKey] into theData[i]
-- end repeat
put displayArrayData2 (theArray, "") into x
replace " => Array" with empty in x
put x into field txtField2 - much better formatting than the dataGrid in the exact example
--combine theArray using return and tab
-- put theArray into field "Table Field"
-- put theArray into field txtField2
-- --put theArray into field DataGrid 1
-- set the dgData of group "DataGrid 1" to theData
-- lock screen
-- This works setting up the column headings with Return as the delimiter
-- put "Col1" & return & "Col21" & return & "Col3" into tColumnTitles
-- set the dgProp["columns"] of group "DataGrid 3" to tColumnTitles
-- NOTE: the GridData array Keys MUST match the colounHeading Names.
-- ??? lost here with this exact XML implementation - may work better NOT using XML
-- set the dgData of group "DataGrid" to theData --[??? entries]
-- unlock screen
-- NOTE: there is also a gdText property you can use
end mouseUp
function displayArrayData2 pArray, pIndent
# create the variable that loops through the keys in the array
local tKey
if pArray is an array then
# print information to indicate that we are entering a new nested level of the array
get "Array" & return
# print full stops that allow the reader to track the depth of an element
--put "." after pIndent
# create the indentation
put tab after pIndent
repeat for each key tKey in pArray
# call displayArrayData with a nested array
--put format("%s[%s] => %s\n", pIndent, tKey, displayArrayData2 (pArray[tKey], pIndent)) after it
put format("%s%s => %s\n", pIndent, tKey, displayArrayData2 (pArray[tKey], pIndent)) after it
end repeat
delete the last char of it
return it
else
return pArray
end if
end displayArrayData2
All my best,
Barry G. Sumpter
Deving on WinXP sp3-32 bit. LC 5.5 Professional Build 1477
Android/iOS/Server Add Ons. OmegaBundle 2011 value ROCKS!
2 HTC HD2 Latest DorimanX Roms
Might have to reconsider LiveCode iOS Developer Program.
Barry G. Sumpter
Deving on WinXP sp3-32 bit. LC 5.5 Professional Build 1477
Android/iOS/Server Add Ons. OmegaBundle 2011 value ROCKS!
2 HTC HD2 Latest DorimanX Roms
Might have to reconsider LiveCode iOS Developer Program.
-
- Posts: 1201
- Joined: Sun Apr 24, 2011 2:17 am
Re: revXML to Datagrid
Perhaps so, but the Node name is suffixed correctly with NodeName[27], NodeName[3], NodeName[15].I'm trying to use the XML to Array but the array comes out - out of XML order.
So I can use the [n] - number as a pointer to fill my own ListData or GridData.
All my best,
Barry G. Sumpter
Deving on WinXP sp3-32 bit. LC 5.5 Professional Build 1477
Android/iOS/Server Add Ons. OmegaBundle 2011 value ROCKS!
2 HTC HD2 Latest DorimanX Roms
Might have to reconsider LiveCode iOS Developer Program.
Barry G. Sumpter
Deving on WinXP sp3-32 bit. LC 5.5 Professional Build 1477
Android/iOS/Server Add Ons. OmegaBundle 2011 value ROCKS!
2 HTC HD2 Latest DorimanX Roms
Might have to reconsider LiveCode iOS Developer Program.
Re: revXML to Datagrid
Hi
I am also trying to populate a DataGrid with XML data and my code works fine, however LIveCode doesn't seem to like the "GSX" extended naming convention of XML, or am I doing something wrong?
My code is:
so.....
This line DOES work (XML "content" tag):
put revXMLNodeContents(pTree, "feed/"& tEntry &"/content") after theData
But this line DOESN'T work (XML "gsx: ..." tag):
put revXMLNodeContents(pTree, "feed/"& tEntry &"/gsx:monday") after theData
Any help appreciated! Thanks.
I am also trying to populate a DataGrid with XML data and my code works fine, however LIveCode doesn't seem to like the "GSX" extended naming convention of XML, or am I doing something wrong?
My code is:
Code: Select all
local theData
repeat for each line tEntry in tEntries
put revXMLNodeContents(pTree, "feed/"& tEntry &"/gsx:tuesday") after theData
end repeat
This line DOES work (XML "content" tag):
put revXMLNodeContents(pTree, "feed/"& tEntry &"/content") after theData
But this line DOESN'T work (XML "gsx: ..." tag):
put revXMLNodeContents(pTree, "feed/"& tEntry &"/gsx:monday") after theData
Any help appreciated! Thanks.
LC 6.6.3, AnimationEngine 5.1
BeatSpeak & EVPoint available for iOS devices on the App Store.
BeatSpeak & EVPoint available for iOS devices on the App Store.
Re: revXML to Datagrid
Figured it out. If the XML tag is, for example, "GSX: name", you just remove the "GSX:" and use "name" by itself.
LC 6.6.3, AnimationEngine 5.1
BeatSpeak & EVPoint available for iOS devices on the App Store.
BeatSpeak & EVPoint available for iOS devices on the App Store.
-
- Posts: 1201
- Joined: Sun Apr 24, 2011 2:17 am
Re: revXML to Datagrid
Thats really strange.
I've returned to see where my sample of properly running sample is and didn't find any.
Does anyone have a actual sample of to post here?
I could have sworn I had one running and had posted the sample solution like most of my other posts.
I've returned to see where my sample of properly running sample is and didn't find any.
Does anyone have a actual sample of to post here?
I could have sworn I had one running and had posted the sample solution like most of my other posts.
All my best,
Barry G. Sumpter
Deving on WinXP sp3-32 bit. LC 5.5 Professional Build 1477
Android/iOS/Server Add Ons. OmegaBundle 2011 value ROCKS!
2 HTC HD2 Latest DorimanX Roms
Might have to reconsider LiveCode iOS Developer Program.
Barry G. Sumpter
Deving on WinXP sp3-32 bit. LC 5.5 Professional Build 1477
Android/iOS/Server Add Ons. OmegaBundle 2011 value ROCKS!
2 HTC HD2 Latest DorimanX Roms
Might have to reconsider LiveCode iOS Developer Program.
-
- VIP Livecode Opensource Backer
- Posts: 253
- Joined: Fri Dec 09, 2011 11:17 am
- Location: Warszawa / Poland
Re: revXML to Datagrid
How to make working XMLAndArrays.rev example stack with unicode (spec. accented letters missing in the upper ASCI as łćźżą etc. - Polish accented chars)
snm
snm