Как заставить xml2js выводить массив для определенных ключей?

Как заставить xml2js выводить массив для определенных ключей?

У меня есть какой-то XML, который я хочу вывести в массив. Но когда существует только один элемент, xml2js выводит один элемент в объект. Когда есть несколько элементов, он выводится как массив. Для согласованности, как заставить его быть массивом?

Мой XML выглядит так:

 const xml = `{amp}lt;Shift{amp}gt; {amp}lt;Transaction{amp}gt; {amp}lt;Currency{amp}gt;GBP{amp}lt;/Currency{amp}gt; {amp}lt;Amount{amp}gt;24.50{amp}lt;/Amount{amp}gt; {amp}lt;/Transaction{amp}gt; {amp}lt;/Shift{amp}gt;` parseStringPromise(xml).then(json ={amp}gt; console.log(JSON.stringify(json))) 

который, как вы можете видеть результаты как:

 { "Transaction": { "Currency": "GBP", "Amount": "24.50" } } 

Но обычно есть несколько транзакций. Поэтому, как правило, XML будет выглядеть так:

 const xml = `{amp}lt;Shift{amp}gt; {amp}lt;Transaction{amp}gt; {amp}lt;Currency{amp}gt;GBP{amp}lt;/Currency{amp}gt; {amp}lt;Amount{amp}gt;24.50{amp}lt;/Amount{amp}gt; {amp}lt;/Transaction{amp}gt; {amp}lt;Transaction{amp}gt; {amp}lt;Currency{amp}gt;GBP{amp}lt;/Currency{amp}gt; {amp}lt;Amount{amp}gt;25.50{amp}lt;/Amount{amp}gt; {amp}lt;/Transaction{amp}gt; {amp}lt;Transaction{amp}gt; {amp}lt;Currency{amp}gt;GBP{amp}lt;/Currency{amp}gt; {amp}lt;Amount{amp}gt;26.50{amp}lt;/Amount{amp}gt; {amp}lt;/Transaction{amp}gt; {amp}lt;Transaction{amp}gt; {amp}lt;Currency{amp}gt;GBP{amp}lt;/Currency{amp}gt; {amp}lt;Amount{amp}gt;27.50{amp}lt;/Amount{amp}gt; {amp}lt;/Transaction{amp}gt; {amp}lt;/Shift{amp}gt;` parseStringPromise(xml).then(json ={amp}gt; console.log(JSON.stringify(json))) 

который выводит в массив, как так

 { "Transaction": [ { "Currency": "GBP", "Amount": "24.50" }, { "Currency": "GBP", "Amount": "25.50" }, { "Currency": "GBP", "Amount": "26.50" }, { "Currency": "GBP", "Amount": "27.50" } ] } 

Как я могу убедиться, что даже если в xml есть только 1 элемент Transaction , он будет выводиться в массив?

Есть ли вариант, который мне нужно передать моему парсеру, или мне нужно переформатировать мой XML?

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector