Re: [xwiki-users] users Digest, Vol 32, Issue 67

2010-03-31 Thread Mike Davis

I want to parse XML attachments to a page and display the data in a
  table or list on the page. Does this functionality exist? Just checking
  before I write my own code.
  
   So you have attachments which are XML files and you want to parse them
  and display their content in a wiki table ?
  
   If so, I'd suggest you use the {{groovy}} macro and use the groovy xml
  slurper to do the work. You should be able to write this in less than 10
  lines :)
  
   http://groovy.codehaus.org/Reading+XML+using+Groovy%27s+XmlSlurper
  
   Thanks
   -Vincent
 
  Thanks, got that up and running in only a few minutes! Now I'd like a way
  to have the user click on one level of the xml hierarchy I display and have
  it expand to show the children of that section (I have the hierarchy
  iteration code, just not the gui code). Something graphically like a
  macro error (the one that says Failed to execute macro: groovy) and then
  you click to expand and view the content.
 
 
 http://code.xwiki.org/xwiki/bin/view/Snippets/ShowHideDIVSnippet
 
 Guillaume


Ok, I have that code working (ShowHidDIV) in a velocity macro with {{html}} 
tags around the div.  Unfortunately, when I pass the xmlslurper object to a 
velocity macro, I can no longer access fields of the object, it looks like it's 
all being converted to a big string.  My code:

{{groovy}}

xmlFile = new String(doc.getAttachment(file.xml).content)
def slurp = new XmlSlurper().parseText(xmlFile)
def allReg = slurp.Register
xcontext.put(allReg,allReg)

{{/groovy}}

 

{{velocity}}
#set($allReg=$xcontext.get(allReg))

{{html}}
div onclick=toggleClass($('REG'), 'hidden')
Show/Hide
/div
div id=REG class=hidden
$allReg.field
/div
{{/html}}
{{/velocity}}


But like I said, I can't access the fields of allReg in the velocity script: 
$allReg.field just returns the whole string from the slurper.  So I need a way 
to either embed html in the groovy code with access to the groovy variables, or 
a way to correctly pass a slurper object using xcontext.

 

Thanks,

-Mike

 
  
_
Hotmail: Trusted email with powerful SPAM protection.
http://clk.atdmt.com/GBL/go/210850553/direct/01/
___
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users


Re: [xwiki-users] users Digest, Vol 32, Issue 67

2010-03-31 Thread Caleb James DeLisle


Mike Davis wrote:
 I want to parse XML attachments to a page and display the data in a
 table or list on the page. Does this functionality exist? Just checking
 before I write my own code.
 So you have attachments which are XML files and you want to parse them
 and display their content in a wiki table ?
 If so, I'd suggest you use the {{groovy}} macro and use the groovy xml
 slurper to do the work. You should be able to write this in less than 10
 lines :)
 http://groovy.codehaus.org/Reading+XML+using+Groovy%27s+XmlSlurper

 Thanks
 -Vincent
 Thanks, got that up and running in only a few minutes! Now I'd like a way
 to have the user click on one level of the xml hierarchy I display and have
 it expand to show the children of that section (I have the hierarchy
 iteration code, just not the gui code). Something graphically like a
 macro error (the one that says Failed to execute macro: groovy) and then
 you click to expand and view the content.

 http://code.xwiki.org/xwiki/bin/view/Snippets/ShowHideDIVSnippet

 Guillaume
 
 
 Ok, I have that code working (ShowHidDIV) in a velocity macro with {{html}} 
 tags around the div.  Unfortunately, when I pass the xmlslurper object to a 
 velocity macro, I can no longer access fields of the object, it looks like 
 it's all being converted to a big string.  My code:

I would approach this problem by using groovy only.
When your velocity or groovy executes, it's output is parsed as XWiki syntax so 
you can do this in the groovy
macro.

println({{html}});
// Remember to escape  marks.
println(div onclick=\toggleClass($('REG'), 'hidden')\);
println(Show/Hide);
println(/div);
pritnln(div id=\REG\ class=\hidden\);
// Is getField() what you want?
println(allReg.getField());
println(/div);
println({{/html}});


Your method is sound and I'm sure it could be made to work, but I would opt to 
use one script language
in order to minimize the code complexity and fragility.

Caleb



 
 {{groovy}}
 
 xmlFile = new String(doc.getAttachment(file.xml).content)
 def slurp = new XmlSlurper().parseText(xmlFile)
 def allReg = slurp.Register
 xcontext.put(allReg,allReg)
 
 {{/groovy}}
 
  
 
 {{velocity}}
 #set($allReg=$xcontext.get(allReg))
 
 {{html}}
 div onclick=toggleClass($('REG'), 'hidden')
 Show/Hide
 /div
 div id=REG class=hidden
 $allReg.field
 /div
 {{/html}}
 {{/velocity}}
 
 
 But like I said, I can't access the fields of allReg in the velocity script: 
 $allReg.field just returns the whole string from the slurper.  So I need a 
 way to either embed html in the groovy code with access to the groovy 
 variables, or a way to correctly pass a slurper object using xcontext.
 
  
 
 Thanks,
 
 -Mike
 
  
 
 _
 Hotmail: Trusted email with powerful SPAM protection.
 http://clk.atdmt.com/GBL/go/210850553/direct/01/
 ___
 users mailing list
 users@xwiki.org
 http://lists.xwiki.org/mailman/listinfo/users
 

___
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users