使用snakeYaml更新yaml文件中的值

时间:2012-11-22 12:17:56

标签: java struts2 yaml struts2-jquery

有没有办法使用java 编辑/删除 YAMLfile中的值。

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

我已经阅读了http://code.google.com/p/snakeyaml/wiki/Documentation#Dumping_YAML链接,我读到我们可以使用模板处理器和其他选项,例如定义java bean属性的顺序,注释使yaml更容易。但所有这些对我来说都没有任何意义。

这是我的代码序列化这里名为 assume 的对象列表。在 gridModel.add(假设); 中,我将类假设(带有过滤器和设置器的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' 第2栏:Balwant 第3栏:SPJ column4:rerer column5:null
  • !! com.example.Assumption 第1栏:'' 第2栏:Vikas column3:RNC 第4栏:erer column5:null
  • !! com.example.Assumption 第1列:'3' 第2栏:'' 第3列:PNBE 第4栏:erer column5:null
  • !! com.example.Assumption 第1列:'4' 第2栏:迪瓦卡尔 column3:BGP column4:rerer column5:null
  • !! com.example.Assumption 第1列:'5' 第2栏:Ajay 第3栏:戈达 第4栏:'' 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);

控制台的输出为:

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

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

1 个答案:

答案 0 :(得分:0)

我认为编辑的唯一方法是覆盖现有的yaml。我们需要从网格中获取值并将ti覆盖到现有值。