我有YMAL文件,使用groovy我想读取和修改一个元素值,然后将其写入另一个文件。
使用此代码,尝试将第一个文件值从TopClass.py修改为changeclass.py。但是它没有改变价值。
import org.yaml.snakeyaml.Yaml
class Test{
def static main(args){
Yaml yaml = new Yaml()
def Map map = (Map) yaml.load(data)
println map.Stack.file[0]
map.Stack.file[0]='changeclass.py'
println map.Stack.file[0]
}
def static String data="""
Date: 2001-11-23 15:03:17 -5
User: ed
Fatal:
Unknown variable "bar"
Stack:
- file: TopClass.py
line: 23
code: |
x = MoreObject("345\\n")
- file: MoreClass.py
line: 58
code: |-
foo = bar
"""
是否有示例常规代码来读取YAML文件并将其修改并将其写入文件?
谢谢SR
代码的问题是您试图以列表形式访问Map.Entry
对象'file'
。此处,'Stack'
yaml数据中的元素是一个包含两个Maps的列表。因此,修改值的正确方法是:
map.Stack[0].file = 'changeclass.py'
要将更改数据保存回文件,请使用dump()
方法。例如:
DumperOptions options = new DumperOptions()
options.setPrettyFlow(true)
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK)
yaml = new Yaml(options)
yaml.dump(map, new FileWriter(<filePath>))
在您的情况下,输出为:
Date: 2001-11-23T20:03:17Z
User: ed
Fatal: Unknown variable "bar"
Stack:
- file: changeclass.py
line: 23
code: |
x = MoreObject("345\n")
- file: MoreClass.py
line: 58
code: foo = bar
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句