Не получается сконвертировать xml в json
Я делаю конвертер XML ⇆ JSON. При попытке вызвать функцию xml2json выскакивает ошибка:
Error: Text data outside of root node.
Line: 0
Column: 20
Char: ]
at error (sax.js:651)
at strictFail (sax.js:677)
at SAXParser.write (sax.js:1035)
at module.exports (xml2js.js:346)
at Object.module.exports [as xml2json] (xml2json.js:13)
at xml2json (main.js:44)
at HTMLButtonElement.convert (main.js:57)
Вот код, которые ее вызывает:
function xml2json() {
try {
let convert = require('xml-js');
let xmlParser = new DOMParser();
let xml = xmlParser.parseFromString(rightTextArea.value, 'text/xml');
console.log(xml);
/*-->*/ leftTextArea.value = convert.xml2json(xml, { compact: false, spaces: 4 });
} catch (e) {
console.log(e);
}
}
leftTextArea - форма для JSON-формата
rightTextArea - форма для XML-формата
Пример XML, на котором программа некорректно работает
<?xml version="1.0" encoding="UTF-8" ?>
<employees>
<employee>
<id>1</id>
<firstName>Scarlett</firstName>
<lastName>Johansson</lastName>
<photo>http://si.wsj.net/public/resources/images/BN-BY925_mag041_OZ_20140318165119.jpg</photo>
</employee>
<employee>
<id>2</id>
<firstName>Chris</firstName>
<lastName>Evans</lastName>
<photo>https://pbs.twimg.com/profile_images/605082381528096769/gt_sJRot.png</photo>
</employee>
<employee>
<id>3</id>
<firstName>Jeremy</firstName>
<lastName>Renner</lastName>
<photo>https://pbs.twimg.com/profile_images/603945839795412992/XTssKbRC.jpg</photo>
</employee>
</employees>
Ответы (1 шт):
Автор решения: Руслан Мамедов
→ Ссылка
Я решил свою проблему, мне в этом помогла вот эта ссылка. Вот код
function xml2json() {
try {
let convert = require('xml-js');
let iconvlite = require('iconv-lite');
let xml = iconvlite.decode(rightTextArea.value, "UTF-8");
leftTextArea.value = convert.xml2json(xml, { compact: false, spaces: 4 });
} catch (e) {
console.log(e);
}
}