2012-11-22 67 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覆蓋到現有值上。