Твое решение очень напоминает google protocol buffers, и как следствие, если есть возможность, я бы посоветовал не изобретать велосипед, а взять готовое решение
по поводу твоего вопроса - посмотри как сделано это в protocol buffers
если коротко
есть три вида поля required, optional, repeated (required - нас сейчас не интересует), если во входящем сообщении встречается несколько раз optional или required - то берется последнее из этих значений для поля, если поле repeated - то все значения добавляются в коллекцию.
P.S protocol buffers - бинарный протокол, но умеет и текстовое представление. Не очень понимаю зачем в 21 веке кому-то мог понадобиться xml? У него есть три оригинальных (в смысле от гугла) реализации + куча совместимых для разных языков.