繁体   English   中英

使用SnakeYaml更新yaml文件中的值

[英]Updating values in a yaml file using snakeYaml

有什么方法可以使用Java 编辑/删除 YAML文件中的值。

我正在使用struts2-jquery-grid,其中的数据将从YAML文件填充。 现在,如果我编辑字段,则应将其保存在YAML文件中。 我能够分别使用yaml.load()和yaml.dump()从YAML格式读取值并将其写入文件。 但是,我不知道要编辑和删除特定字段。

我浏览了http://code.google.com/p/snakeyaml/wiki/Documentation#Dumping_YAML链接,在该链接中,我们了解到我们可以使用模板处理器和其他选项(例如定义Java bean属性的顺序,注释以简化操作) yaml 但是所有这些对我来说都没有任何意义。

这是我的代码,用于在此处序列化称为假定的对象列表。 gridModel.add(assumption);中 ,我将Assumption类(带有束缚器和设置器的bean类)的值存储到gridModel中的列表中。

       gridModel.add(assumption);

       try {

        FileWriter pr=new FileWriter("D:/yaml.yaml");

        DumperOptions options = new DumperOptions();

         options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);

        Yaml yaml = new Yaml(options);
        String output=yaml.dump(gridModel);//,Tag.MAP, null);
        pr.write(output);
        System.out.print(pr.toString());
        System.out.println();

        pr.close();
        }catch(Exception e){
            e.printStackTrace();
        }

我进入一个名为yaml.yaml的文件,结果是:

  • !! com.example.Assumption column1:'1'column2:Balwant column3:SPJ column4:rerer column5:null
  • !! com.example.Assumption column1:''column2:Vikas column3:RNC column4:erer column5:null
  • !! com.example.Assumption column1:'3'column2:''column3:PNBE column4:erer column5:null
  • !! com.example.Assumption column1:'4'column2:Diwakar column3:BGP column4:rerer column5:null
  • !! com.example.Assumption column1:'5'column2:Ajay column3:Godda column4:''column5:null

对于反序列化 ,代码为:

            InputStream input = new FileInputStream(new File("D:/yaml.yaml"));
    Yaml yaml = new Yaml();
    for (Object data : yaml.loadAll(input))
        System.out.println("Data:"+data);

控制台的输出为:

数据:[假设[列1 = 1,列2 = Balwant,列3 = SPJ,列4 =错误,列5 =空],假设[列1 =,列2 = Vikas,列3 = RNC,列4 =错误,列5 =空],假设[ column1 = 3,column2 =,column3 = PNBE,column4 = erer,column5 = null],假设[column1 = 4,column2 = Diwakar,column3 = BGP,column4 = rerer,column5 = null],假设[column1 = 5,column2 = Ajay,column3 = Godda,column4 =,column5 = null]]

我是yaml和struts2的新手。 因此,请回答一个干净的解决方案。 如果我在描述需求时错了,请纠正我。 提前致谢...

我认为编辑的唯一方法是覆盖现有的Yaml。 我们需要从grid获取值并将ti覆盖为现有值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM