2012-11-22 45 views
1

有没有什么办法来编辑/删除使用java的YAML文件中的值。使用snakeYaml更新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(假设);,我在gridModel中将这个类的假设值(带有fet件和setter的bean类)的值存储在这里。

 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(); 
     } 

的outout我得到一个名为yaml.yaml文件:

  • !com.example.Assumption 列1: '1' 列2:Balwant 第3栏:SPJ 第4栏:rerer 第5栏:null
  • !! com.example.假设 第1栏:'' 列2:维卡斯 栏3:RNC column4:ERER column5:空
  • !! com.example.Assumption 列1: '3' 列2: '' 栏3:PNBE column4:ERER column5:空
  • !com.example.Assumption 列1: '4' 列2:迪瓦卡尔 栏3:BGP column4:rerer column5:空
  • !com。示例。假设 列1: '5' 列2:阿贾伊 栏3:Godda column4: '' column5:空

对于反序列的代码是:

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

的输出到控制台是:

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

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

+0

我觉得编辑基本上是:读 - >修改 - >写。你能这样做吗? –

+0

你是对的。正如我上面提到的,我使用的是一个jqGrid网格。所以,我可以使用网格来读取,修改以及修改我想反映到yaml文件。 –

+1

显示处理jqGrid修改的java代码。 –

回答

0

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