Есть XML данные (неважно, получены ли через XMLHttpRequest, либо отпарсены со строки), в которых содержатся данные, которые необходимо отправить каждые в свою функцию. Для ускорения работы я преобразовываю XML в JSON.
Например (от балды, названия тегов, атрибуты и значения не играют роли):
<xml>
<obj attr='v1'><d/></obj>
<q att='3'><z/><z/></q>
<q att='1'></q>
<ggg>345</ggg>
</xml>
в такой вид:
{
"obj":[{
"attr":"v1",
"d":[{}]
}],
"q":[
{"att":"3","z":[{},{}]},
{"att":"1"}
],
"ggg":[{"$value":"345"}]
}
Т.е. аттрибуты были строковыми свойствами, текстовые значения - как свойства $value (хотя это было плохо, например, в ситуациях, когда помимо текста есть и вложенные теги), а вложенные дочерние теги организовывались как свойства-массивы.
Такая ситуация спасала до тех пор, пока не возникла необходимость:
1) во-первых, отслеживать точный порядок тегов;
2) во-вторых, помимо текста иметь внутри и другие теги.
В общем, задача звучит как "Преобразование в JSON с сохранением порядка XML".
Как вариант вводить дополнительные свойства, например, $all как массив с дочерними объектами (в этом случае сохранится порядок), но я пока сомневаюсь.
Кстати, объект инициируется не обязательно форматом JSON. Важно, чтобы в конце всех преобразований это был объект с вышеуказанными свойствами.
Вся эта лабуда напоминает SimpleXML из PHP.
Что можете посоветовать? Если есть радикально другие варианты удобного преобразования - тоже неплохо
