2011-01-28 7 views
1

Я отхлебнул фид твиттера, где каждая запись выглядит следующим образом:мета программирования XMLSlurper результаты

<entry> 
    <id>tag:search.twitter.com,2005:30481912300568576</id> 
    <published>2011-01-27T04:27:08Z</published> 
    <link type="text/html" rel="alternate" href="http://twitter.com/LadyCourtz/statuses/30481912300568576"/> 
    <title>U always right. ml</title> 
    <content type="html">U always right. T <a href=&quot;http://twitter.com/Star_babey&quot;>@Star_babey</a>: But its only <b>twitter</b> tho star u wilding...lml</content> 
    <updated>2011-01-27T04:27:08Z</updated> 
    <link type="image/png" rel="image" href="http://a2.twimg.com/profile_images/1221429153/248287865_normal.jpg"/> 

и т.д. и т.п.

Что мне нужно сделать в Грааль/GSP был для отображения изображения, как <img src=${tweet.imgUrl}/> Таким образом, это выглядело как хороший пример для метапрограммирования результата XML, но у меня проблемы с Groovy nooby.

Посмотрите, как есть, по крайней мере, 2 "связных" узла, url изображения имеет атрибут rel="image". Так что я пытался ...

def records = new XmlSlurper().parse(response.data) 
records.entry.metaClass.imgUrl = { -> return delegate.link?.find{[email protected] == 'image'}[email protected] } 

Но ошибки, как это я не могу выйти за пределы:

groovy.lang.MissingMethodException: No signature of method: groovy.util.slurpersupport.NodeChild.shout() is applicable for argument types:() values: [] 

Любая помощь не оценил

ответ

1

Нет необходимости в мета-программирования я не думаю, вы должен только быть в состоянии:

imageUrlList = new XmlSlurper().parse(response.data).entry.link.findAll { [email protected] == 'image' }*[email protected] 

Тогда это должно оставить вас со списком строк для каждого местоположения ...

Вы передаете весь XmlSlurper обратно в GSP? Я бы, наверное, просто извлек нужные данные и отправил только обратно

+0

Я думаю, что мета-программирование было бы лучшим вариантом в этом случае ... еще немного информации, рассмотрим GSP, вызывающий шаблон (или даже просто итерацию по записи) Спасибо, хотя он дал мне что-то еще, чтобы рассмотреть в шаблоне: $ {entry.title } Steve

+0

Похоже, мета-программирование XMLSLurper будет означать мета-программирование groovy.util.slurpersupport.NodeChild.metaClass, только что началось с того, что вы ошибаетесь, и я не мог заставить его работать в любом случае. Поэтому я обратился к чистому подходу в GSP: <г: FindAll в = "$ {entry.link}" выраж = "это @ отн == 'изображения'"> \t Нет мета программирование после ... вы были правы! – Steve