【问题标题】:Updating values in a yaml file using snakeYaml使用 snakeYaml 更新 yaml 文件中的值
【发布时间】:2012-11-10 20:17:02
【问题描述】:

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

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

我浏览了http://code.google.com/p/snakeyaml/wiki/Documentation#Dumping_YAML 链接,在那里我读到我们可以使用 模板处理器 和其他选项,例如 定义 java bean 属性的顺序、cmets 以简化 yaml时间>。但所有这些对我来说都没有任何意义。

这是我的代码,用于序列化此处称为假设的对象列表。在 gridModel.add(assumption); 中,我将 Assumption 类(带有 fetters 和 setter 的 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 第 1 列:“1” 专栏 2:巴尔旺 第 3 列:SPJ 第 4 列:重新分配 第 5 列:空
  • !!com.example.Assumption 第 1 列:'' 第 2 列:维卡斯 第 3 列:RNC 第 4 列:犯错 第 5 列:空
  • !!com.example.Assumption 第 1 列:“3” 第 2 列:'' 第 3 列:PNBE 第 4 列:犯错 第 5 列:空
  • !!com.example.Assumption 第 1 列:“4” 专栏 2:迪瓦卡 第 3 列:BGP 第 4 列:重新分配 第 5 列:空
  • !!com.example.Assumption 第 1 列:“5” 专栏 2:阿杰 专栏3:哥达 第 4 列:'' 第 5 列:空

反序列化的代码是:

            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],假设 [column1=,column2=Vikas,column3=RNC,column4=erer,column5=null] , 假设 [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 的新手。所以,请回答一个干净的解决方案。纠正我,如果我在描述要求时错了。在此先感谢...

【问题讨论】:

  • 我认为编辑基本上是:读取->修改->写入。你可以这样做吗?
  • 你是对的。正如我上面提到的,我使用的是 jqGrid 网格。所以,我可以使用网格读取,也可以进行修改,但我想将修改反映到 yaml 文件中。
  • 显示处理来自 jqGrid 的修改的 java 代码。
  • 这完全不清楚。映像您没有 YAML 文件,而是预格式化的文本文件。有什么区别?
  • @NikitaBeloglazov 我正在用代码更新问题,请参考。

标签: java struts2 yaml struts2-jquery


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-04-11
    • 2015-08-31
    • 2013-02-08
    • 2014-09-16
    • 2017-02-06
    • 2018-12-26
    • 2014-10-11
    • 2018-12-13
    • 2018-07-22
    相关资源
    最近更新 更多