2012-08-04 2 views
2

J'ai un problème qui semble assez commun mais je ne trouve vraiment pas d'approche pour le résoudre. J'ai un grand document XML et je vais l'analyser. la structure du document est la suivante:XML Data to List in scala

<response> 
<result> 
    <doc> 
     <float name="xxx">0.0</float> 
     <int name="yyy">123</int> 
     <str name="zzz">hello</str> 
     <str name="xyz">world</str> 
    </doc> 
</result></response> 

et je voudrais analyser ces informations dans une carte de hachage comme "Carte [String, Int] (yyy, 123)" (une carte fo rêverie Datatype). Tous les exemples que j'ai trouvés jusqu'à maintenant expliquent comment je peux obtenir un résultat comme "zzzhelloxyzworld" si je cherche la balise "str" ​​ou comment je peux trouver l'attribut "name" dans une balise "str" mais je connais l'attribut name et je voudrais avoir l'information dans la balise "str". Par exemple, me donne une carte de toutes les valeurs d'attribut. mais je ne connais pas le moyen d'accéder aux données. J'espère que quelqu'un peut m'aider ici parce que cela me semble une tâche si commune et je ne sais pas pourquoi je n'ai pas trouvé de solution à ce problème.

Répondre

1
(xmldoc \\ "str").map(n => (n \ "@name").text -> n.text).toMap 

donne

scala.collection.immutable.Map[String,String] = Map(zzz -> hello, xyz -> world) 
+0

merci, je savais que ce ne pouvait être qu'une seule ligne;) –

+0

Heureux d'avoir aidé :) – viktortnk