This is a Javascript precision problem.
According to Mozilla Developer Network:
ECMA-262 only requires a precision of up to 21 significant digits. Other implementations may not support precisions higher than required by the standard.
Source: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toPrecision
I pasted your array into Google Chrome's Javascript console and got back this:
![Javascript precision bug]()
So it looks like Javascript is rounding the values before they are being converted to XML. Since your conversion is being done via Javascript in the browser at http://www.utilities-online.info/xmltojson/, it makes sense why the number was changed.
(Note: I tested on Google Chrome version 26.0.1410.43 m using Windows 7 Professional)
Edit:
Is there any reason why you cannot pass these values to Javascript as strings?
Try this:
[
{
"orderNumber": "1",
"customerId": "228930314431312345",
"shoppingCartId": "22893031443137109",
"firstName": "jjj"
}
]
I was able to do this and save the values successfully. However, you will not be able to run a math calculation on them in Javascript without losing some precision, unless you are doing something like multiplying by 0, of course.
![Javascript precision string workaround]()
This also converted to XML correctly using your reference http://www.utilities-online.info/xmltojson/.