Skip to content

Instantly share code, notes, and snippets.

@loicdescotte
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loicdescotte/70c68e92bb6f499f78ec to your computer and use it in GitHub Desktop.
Save loicdescotte/70c68e92bb6f499f78ec to your computer and use it in GitHub Desktop.
Simple Scala XML Parsing
//val xmlNode = xml.XML.loadFile("xxx")
val xmlNode =
<persons>
<person age="30">
<name>bob</name>
</person>
<person age="40">
<name>joe</name>
</person>
</persons>
val personNodes = xmlNode \\ "person"
personNodes.map(personNode => personNode \ "name")
//List(NodeSeq(<name>bob</name>), NodeSeq(<name>joe</name>))
personNodes.flatMap(personNode => (personNode \ "name").map(nameNode => nameNode.text))
//List(bob, joe)
personNodes.map(personNode => personNode \ "@age")
//List(30, 40)
@loicdescotte
Copy link
Author

personNodes.flatMap(personNode => (personNode \ "name").map(nameNode => nameNode.text))

Can be written :

for {
  personNode <- personNodes
  nameNodes <- personNode \ "name"
  nameNode <- nameNodes
} yield nameNode.text

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment