[英]How do I parse a YAML file in groovy?
假設您有一個名為example.yaml
的文件,其中包含以下內容: - subject: maths
。
我如何在- subject
之后抓取字符串?
我已經可以讀取文件的內容,但想知道如何從中獲取特定的字符串。
注意:我知道正則表達式可能會有所幫助,但從未使用過它,希望得到任何幫助。
更新 (2020)
Groovy 3 現在包含一個groovy.yaml.YamlSlurper
(類似於JsonSlurper
/ XmlSlurper
)
對於以前的版本(原始答案) :
Snakeyaml 是一個解析 YAML 文件的庫。 在 groovy 中易於使用。
更新:將示例變量的類型更改為 List,因為示例文件的頂級元素是一個集合
@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}
snakeyaml 的完整文檔:
FWIW,即將發布的(在撰寫本文時)Groovy 3.0 版直接支持 yaml: http : //docs.groovy-lang.org/next/html/api/groovy/yaml/package-summary.html與傳統的YamlSlurper / YamlBuilder 組合您可以隨時切換到這個尚未正式發布的版本。
[編輯] 該版本 3.0.x 現在正式可用,帶有 groovy.yaml 包http://docs.groovy-lang.org/latest/html/api/groovy/yaml/package-summary.html
這是一個例子: https : //github.com/apache/groovy/blob/bdb2f7a482a4daec2bee01acd5590241c356e966/subprojects/groovy-yaml/src/spec/test/groovy/yaml/YamlParserTest.groovy#L83
順便說一句,從 Groovy 4.0.0 開始支持一個 yaml 文件中的多個文檔。 例如, https://github.com/apache/groovy/blob/bdb2f7a482a4daec2bee01acd5590241c356e966/subprojects/groovy-yaml/src/spec/test/groovy/yaml/YamlParserTest.groovy#L109
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.