Обновление значений в файле yaml с помощью snakeYaml

Есть ли способ изменить / удалить значения в YAML-файле с помощью java.

Я использую struts2-jquery-grid, где данные будут заполнены из файла YAML. Теперь, если я отредактирую поля, они должны быть сохранены в файле YAML. Я могу читать значение и записывать значения в файл в формате YAML, используя yaml.load () и yaml.dump () соответственно. Но у меня нет идеи редактировать и удалять конкретное поле.

Я прошел через http://code.google.com/p/snakeyaml/wiki/Documentation#Dumping_YAML, где я прочитал, что мы можем использовать обработчик шаблонов и другие параметры, такие как определение порядка свойства java bean, комментарии для упрощения yaml . Но для меня все это не имеет никакого смысла.

Вот мой код для сериализации списка объектов, называемых здесь предположением. В gridModel.add (допущение); я сохраняю значения класса Assception (класс компонента с ограничениями и сеттерами) в списке здесь, в 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.Assuming column1: '1' column2: Balwant column3: SPJ column4: rerer column5: null
  • !! com.example.Assception column1: '' column2: Vikas column3: RNC column4: erer column5: null
  • !! com.example.Assroduction column1: '3' column2: '' column3: PNBE column4: erer column5: null
  • !! com.example.Assuming column1: '4' column2: Diwakar column3: BGP column4: rerer column5: null
  • !! com.example.Assroduction column1: '5' column2: Ajay column3: Godda column4: '' 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);

Вывод на консоль:

Данные: [предположение [столбец1 = 1, столбец2 = Balwant, столбец3 = SPJ, столбец4 = rerer, столбец5 = ноль], предположение [столбец1 =, столбец2 = Викас, столбец3 = RNC, столбец4 = erer, столбец5 = ноль], предположение [ 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. Итак, ответьте, пожалуйста, чистым решением. Поправьте меня, если я ошибаюсь при описании требования. Заранее спасибо...


person Balwant Kumar Singh    schedule 22.11.2012    source источник
comment
Я думаю, что редактирование - это в основном: читать - ›изменять -› писать. Вы можете сделать это таким образом?   -  person Mikita Belahlazau    schedule 22.11.2012
comment
Ты прав. Как я уже упоминал выше, я использую сетку jqGrid, поэтому я могу читать с помощью сетки, а также изменять, но ту модификацию, которую я хочу отразить в файле yaml.   -  person Balwant Kumar Singh    schedule 22.11.2012
comment
Покажите Java-код, в котором вы обрабатываете модификацию из jqGrid.   -  person Mikita Belahlazau    schedule 22.11.2012
comment
Это совершенно непонятно. Представление, у вас есть не YAML-файл, а предварительно отформатированный текстовый файл. В чем разница ?   -  person Andrey    schedule 22.11.2012
comment
@NikitaBeloglazov Я обновляю вопрос кодом, пожалуйста, обратитесь к нему.   -  person Balwant Kumar Singh    schedule 23.11.2012
comment
@Andrey Пожалуйста, обратитесь к коду, который я разместил с вопросом.   -  person Balwant Kumar Singh    schedule 23.11.2012


Ответы (1)


Я думаю, что единственный способ отредактировать - это перезаписать существующий yaml. Нам нужно получить значения из сетки и перезаписать ti на существующее.

person Balwant Kumar Singh    schedule 03.12.2012