How do I parse a YAML file in groovy?
UPDATE Dec-2021: The documentation of the SnakeYAML project is not accessible anymore on Bitbucket, and a quick google search did not show any alternate repository, so I guess this project either has gone closed source or it has died.
So I am adding here the same example, but implemented with the native YAMLSlurper (Groovy 3.x+):
import groovy.yaml.YamlSlurper
def exampleYaml = '''\
---
- subject: "maths"
- subject: "chemistry"
'''
List example = new YamlSlurper().parseText(exampleYaml)
//If your source is a File
// List example = new YamlSlurper().parse("example.yaml" as File)
example.each{println it.subject}
For previous versions (Original answer):
snakeyaml is a library to parse YAML files. Easy to use in groovy.
UPDATE: changed type of the example variable to List, as the example file's top level element is a collection
@Grab('org.yaml:snakeyaml:1.17')
import org.yaml.snakeyaml.Yaml
Yaml parser = new Yaml()
List example = parser.load(("example.yaml" as File).text)
example.each{println it.subject}
Full documentation of snakeyaml:
https://bitbucket.org/asomov/snakeyaml/wiki/Documentation
FWIW, the upcoming (as time of this writing) Groovy version 3.0 has direct support for yaml: http://docs.groovy-lang.org/next/html/api/groovy/yaml/package-summary.html with the traditional YamlSlurper / YamlBuilder combo You could always switch to this not-yet-officially-released version.
[Edited] that version 3.0.x is now officially available, with the groovy.yaml package http://docs.groovy-lang.org/latest/html/api/groovy/yaml/package-summary.html