JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://www.thomasfrank.se/downloadableJS/xml2json.js"></script>
<pre id="res"></pre>
JavaScript
var xml = '<Products><ProductAttribute Cid="5" Aid="A2"><ProductCat>Вода</ProductCat><Value>минеральная</Value> </ProductAttribute><ProductAttribute Cid="5" Aid="A4"><ProductCat>Вода</ProductCat><Value>газированая</Value> </ProductAttribute><ProductAttribute Cid="4" Aid="M122"><ProductCat>Рыба</ProductCat><Value>Карась</Value></ProductAttribute></Products>';
var myJsonObject=xml2json.parser(xml),
products = myJsonObject.products.productattribute,
arr = [],
values = {},
catNames = {};
products.forEach(function(prodObj) {
var cid = prodObj.cid;
if (!catNames[cid]) catNames[cid] = prodObj.productcat;
if (!values[cid]) values[cid] = [];
values[cid].push({
aid: prodObj.aid,
value: prodObj.value
});
});
for(var cid in values) {
arr.push({
Cid: cid,
ProductCat: catNames[cid],
values: values[cid]
});
}
var result = {'Products': arr};
res.innerHTML = JSON.stringify(result,'',2);