Page 1 of 1

Contents from xml tag

Posted: Thu Oct 27, 2016 11:37 am
by samjith
Is it possible to get the node contents from this sample XML?

i/p
******

Code: Select all

<root>
<Tag1>just a tag</Tag1>
<Tag1>just a tag</Tag1>
<A att="10">
<text x="5"> some text 1</text>
<text x= "10"> some text 2</text>
</A>
<Tag1>just a tag</Tag1>
<A x="1"> some text 3</A>
<A x="2"> some text 4</A>
<Tag1>just a tag</Tag1>
<A att="0">
<text x = "15"> some text 5</text>
<text x = "10"> some text 6</text>
</A>
</root>
expected o/p
*******************
15: some text 1
20: some text 2
1: some text 3
2: some text 4
15: some text 5
20: some text 6
*******************
(this may confuse: if "A"contains "text" then, add the values eg: 10+5, and the result of "text")

Re: Contents from xml tag

Posted: Thu Oct 27, 2016 4:12 pm
by MaxV
Look this example:
this XML:

Code: Select all

<root>
<Tag1>just a tag</Tag1>
<Tag1>just a tag</Tag1>
<A att="10">
<text x="5"> some text 1</text>
<text x= "10"> some text 2</text>
</A>
<Tag1>just a tag</Tag1>
<A x="1"> some text 3</A>
<A x="2"> some text 4</A>
<Tag1>just a tag</Tag1>
<A att="0">
<text x = "15"> some text 5</text></A></root>
put this XML in a field and then in a button this code:


########CODE#######
on mouseUp
revXMLDeleteAllTrees
put field 1 into tXMLData
put revXMLCreateTree(tXMLData, true, true, true) into xmlID
put revXMLChildNames(XMLID,"/",comma,,true) # returns Tag1[1],Tag1[2],A[1],Tag1[3],A[2],A[3],Tag1[4],A[4]
put revXMLNodeContents(xmlID, "root/Tag1[1]") #returns "just a tag"
end mouseUp
#####END OF CODE#####

Now you can deal with your XML. :D

Re: Contents from xml tag

Posted: Fri Oct 28, 2016 5:25 am
by samjith
You deal me, in a nice way :D

I understood something. But i don't know how to treat with the attributes.
put revXMLChildNames(XMLID,"/",comma,,true) # returns Tag1[1],Tag1[2],A[1],Tag1[3],A[2],A[3],Tag1[4],A[4]
and why the "test" tag not return here

How you know these things?
Can you suggest some tutorials/examples/links, to extract data’s from the XML, for my requirements,
apart from http://lessons.livecode.com/m/4071/l/70 ... n-xml-file
because i am very new in revXML.... tags

grazie molto

Re: Contents from xml tag

Posted: Fri Oct 28, 2016 12:54 pm
by [-hh]
You could try the following. You don't have to know anything of XML for that.
It's just an exercise with linedelimiter and itemdelimiter.
Not this elegant, written right out of my brain. But it works here.
[For your test input the output shows that your last example line is wrong: Should read "10: some text 6".]

Code: Select all

on mouseUp
  put fld 1 into t -- your input text
  set linedel to "<A "; set itemdel to "</A>"
  delete line 1 of t
  repeat for each line L in t
    put item 1 of L into s
    set itemdel to ">"; put item 1 of s into s1
    if "att" is not in s1 then
      put cr& "att="& quote&"0"&quote& "> " & s after s0
    else
      replace "=" with space in s1
      put "att="&(word -1 of s1)& "> " into z
      set linedel to "<text "; set itemdel to "</text>"
      delete line 1 of s
      repeat for each line l1 in s
        put cr & z & item 1 of l1 after s0
      end repeat
    end if
    set linedel to "<A "; set itemdel to "</A>"
  end repeat
  set linedel to cr; set itemdel to ">"
  repeat for each line L in s0
    if L is empty then next repeat
    put item 1 of L into i0; replace "=" with space in i0
    put value(word -1 of i0) into y
    put item 2 of L into i0; replace "=" with space in i0
    put value(word -1 of i0) into x
    put cr & (y+x) & colon & item 3 of L after t0
  end repeat
  put char 2 to -1 of t0 into fld 2 -- the output field
end mouseUp
For multichar delimiters as above you need to use LC 7 and above.
For LC 6 you can adjust the code by using an unusual char as temporary single-char delimiter, for example

Code: Select all

-- instead of
set linedel to "<A "; set itemdel to "</A>"
-- you do in LC 6 in order to have a single char delimiter
replace "<A " with numToChar(1) in t; set linedel to numToChar(1)
replace "</A> " with numToChar(2) in t; set itemdel to numToChar(2)
[Edit. Removed some typos.]

Re: Contents from xml tag

Posted: Fri Oct 28, 2016 12:56 pm
by MaxV
This is my blog: http://livecodeitalia.blogspot.it/
and this is the result about XML: http://livecodeitalia.blogspot.it/search?q=xml
It's translated in your language by the google translator (top right button)

Re: Contents from xml tag

Posted: Fri Oct 28, 2016 1:27 pm
by samjith
@hh, Great work, but it may difficult to debug and maintain in future.

@MaxV thanks for your links.