Я не знаю деталей SnakeYAML, но вы не можете просто объединить два файла a.yaml
и b.yaml
, даже если они оба имеют сопоставление на корневом уровне.При этом вы получите дубликат ключа в своем отображении, и в соответствии со спецификациями YAML 1.2 (и 1.0) вам не разрешено иметь дубликаты ключей, а спецификация 1.1 гласит, что вы должны получить предупреждение о дубликате ключа и первом значении(вы указываете, что хотите иметь второе).
Таким образом, вы должны решить эту проблему в Java, и вы можете сделать это, загрузив документы из соответствующих файлов и обновив структуру данных, загруженную из a.yaml
, с помощьюодин из b.yaml
.
Вы также можете объединить файлы в файл с несколькими документами, но для этого документы должны быть разделены указателем-указателем конца (---
) илиИндикатор окончания документа (...
).Обычно вам нужно использовать специальную функцию «загрузить все» для загрузки такого файла с несколькими документами, в результате чего получается список (или итератор) структур данных, загруженных из отображений, которые затем можно объединить.
Если вы создаете многодокументный файл программным способом, убедитесь, что файлы заканчиваются символом новой строки, в противном случае добавляется ---
и следующий файл не даст ожидаемый поток многодокументных документов.