Не уверен, что MultiMap лучше всего подходит для того, что вы здесь описали. Мультикарта - это то, где у вас есть несколько значений для одного и того же ключа. Это не то, что описывает ваш XML. Ваш XML описывает иерархию, в которой у каждого значения есть путь, возможно, с несколькими конкатенациями ключей, описывающих его местоположение в иерархии.
С точки зрения моделирования я хотел бы рассмотреть возможность использования двух типов узлов XML. 1 содержит значения, а другой содержит узлы (например, файлы против каталогов). Вам нужно будет переключить свой XML, чтобы четко разграничить два разных типа. Так будет проще разобрать.
Итак, в грубом псевдо-коде ..
class Container {
private Map<String,String> keyValuePairs;
private Map<String,Container> children;
}
Это дает вам бесконечную глубину. Каждый контейнер может содержать пары keyValue, а также другие контейнеры. Узел верхнего уровня должен быть корневым контейнером. Рекурсия должна быть тривиальной. Обход по ключу / разделителю также должен быть легким.
Возможно, более гибкий, чем вам нужно. Обрезать по мере необходимости.
Вы также можете объединить концепцию значений / контейнеров, но тогда ваше моделирование станет немного уродливее. Это компромисс.