【发布时间】: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