помогите с картой grails - PullRequest
       1

помогите с картой grails

0 голосов
/ 27 августа 2011

Я пытаюсь динамически создать коллекцию карт, но я все еще новичок в Grails и надеялся, что кто-нибудь сможет мне помочь.Что я хочу сделать, это разобрать и XML-файл и добавить значения на карту.У меня есть разбор, но просто не знаю, как динамически добавлять значения узлов на карту.вот что у меня так далеко:

пример потока xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
    <connections total="29">
      <person>
        <id>123245</id>
        <first-name>me</first-name>
        <last-name>you</last-name>          
      </person>
    </connections>
 </person>

Затем я анализирую это так:

  def alum = new XmlSlurper().parseText(xmlResponse)
   alum.connections.person.each{ conName ->
print conName.'id'.toString() + " " +  conName.'first-name'.toString() + " " + conName.'last-name'.toString() + "\n"
   }

Итак, это позволяет мне перебиратьи разобрать поток xml.У меня вопрос, если бы я хотел динамически добавить значения к карте:

   def myMap= [fName:"SomeName", lName:"Sme last Name", id:1234]

как бы мне это сделать?

Спасибо, Джейсон

Ответы [ 2 ]

2 голосов
/ 27 августа 2011

Если вы не знаете имен дочерних узлов и хотите использовать их в качестве ключей на карте, используйте это:

def alum = new XmlSlurper().parseText(xmlResponse)
alum.connections.person.each { conName ->
   def myMap = [:]
   conName.children().each { child -> myMap[child.name()] = child.text() }
}

Это приведет к [id: '123245', 'first-name': 'me', 'last-name': 'you']

Не связано: вы можете замкнуть ваш код отладки с помощью GString:

print "${conName.'id'} ${conName.'first-name'} ${conName.'last-name'}\n"
0 голосов
/ 28 августа 2011

хорошо, я просто использовал многомерный массив, и это, кажется, работало нормально. Еще раз спасибо за вашу помощь

int i=0
String[][] friends = new String[test][4]
alum.connections.person.each{ conName ->
friends[i][0] =conName.'id'.toString()
friends[i][1] =conName.'first-name'.toString()
friends[i][2] =conName.'last-name'.toString()
friends[i][3] =conName.'picture-url'.toString()
i++
}
[Friends:friends]

Таким образом, я смог передать его на мою отличную страницу и перебрать массив

...