Как бы,укпзанный в (1) результат можно получить только ручной записью,т.к.структура ничего не знает от том,в какой блок тагов ее хотят писать.
Опять же,если имена полей структуры соответствуют именам тагов,то просто циклом,если нет,то нужно как-то определить это соответствие.
А можно почитать про XDTO,хотя и там нужно стараться.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший