Ответ 1
Это проблема точности Javascript.
В соответствии с Mozilla Developer Network:
ECMA-262 требует только до 21 значащей цифры. Другие реализации могут не поддерживать точность, превышающую требования стандарта.
Источник: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toPrecision
Я вставил ваш массив в консоль Javascript Google Chrome и получил это:
Итак, похоже, что Javascript округляет значения до того, как они преобразуются в XML. Поскольку ваше преобразование выполняется через Javascript в браузере в http://www.utilities-online.info/xmltojson/, имеет смысл, почему номер был изменен.
(Примечание: я тестировал версию Google Chrome 26.0.1410.43 m с помощью Windows 7 Professional)
Edit:
Есть ли причина, по которой вы не можете передать эти значения в Javascript как строки?
Попробуйте следующее:
[
{
"orderNumber": "1",
"customerId": "228930314431312345",
"shoppingCartId": "22893031443137109",
"firstName": "jjj"
}
]
Я смог сделать это и успешно сохранить значения. Тем не менее, вы не сможете запускать математический расчет на них в Javascript, не теряя при этом определенной точности, если, конечно, вы не делаете что-то вроде умножения на 0.
Это также правильно преобразуется в XML, используя вашу ссылку http://www.utilities-online.info/xmltojson/.