Возможно, это не самый эффективный способ, но вы могли бы просто обработать xml как строку, разделить и проанализировать ее.
https://jsfiddle.net/an14zo2p/
let xml = `<menu>
<variant>
<value>1</value>
<text>12 pa</text>
</variant>
<variant>
<value>2</value>
<text>30 pa</text>
</variant>
<variant>
<value>3</value>
<text>40 pa</text>
</variant>
<variant>
<value>4</value>
<text>50 pa</text>
</variant>
</menu`.replace(/[\n\t]/g, ''); //remove new lines and tabs
let arr = xml.split('<value>');
arr.shift(); //arr[0] is blank
$.each(arr, function(index, variant) {
arr[index] = {
text: variant.substring(variant.indexOf('<text>') + 6, variant.indexOf('</text>')),
value: variant.substr(0, variant.indexOf('</value>'))
};
});
document.write(JSON.stringify(arr));
console.log(arr);