XML в JavaScript без головной боли: знакомимся с node-xml2js
Когда XML — это не приговор
Помните те времена, когда работа с XML в JavaScript была настоящей пыткой? Громоздкие DOM-парсеры, сложные API, непредсказуемые результаты... К счастью, в Node.js-экосистеме есть проверенное решение — пакет node-xml2js, который превращает работу с XML в удовольствие.
Что такое node-xml2js?
Это легковесный конвертер между XML и JavaScript-объектами, который:
- Парсит XML в удобные JS-объекты
- Позволяет генерировать XML из JS-объектов
- Основан на проверенных библиотеках (sax-js и xmlbuilder-js)
- Имеет простой и понятный API
Основные возможности
1. Простейший парсинг
const { parseString } = require('xml2js');
const xml = "<root>Hello xml2js!</root>";
parseString(xml, (err, result) => {
console.dir(result);
// { root: 'Hello xml2js!' }
});
Буквально три строчки — и вы получаете JavaScript-объект вместо XML-строки!
2. Гибкие опции парсинга
Хотите тримить пробелы или нормализовать теги? Легко:
parseString(xml, {
trim: true,
normalizeTags: true,
explicitArray: false
}, callback);
3. Генерация XML из объектов
const { Builder } = require('xml2js');
const obj = {
person: {
$: { id: "123" }, // атрибуты
name: "Alex",
age: 30
}
};
const builder = new Builder();
const xml = builder.buildObject(obj);
Результат:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person id="123">
<name>Alex</name>
<age>30</age>
</person>
4. Поддержка Promise API
Для любителей современных подходов:
const parser = new Parser();
parser.parseStringPromise(xml)
.then(result => console.dir(result))
.catch(err => console.error(err));
5. Работа с пространствами имен
const obj = {
'foo:Foo': {
$: { 'xmlns:foo': 'http://foo.com' },
'bar:Bar': {
$: { 'xmlns:bar': 'http://bar.com' }
}
}
};
const xml = builder.buildObject(obj);
Где это пригодится?
- Работа с API — многие сервисы до сих пор используют XML
- Конфигурационные файлы — например, для старых проектов
- Преобразование данных — когда нужно конвертировать XML в JSON
- Генерация документов — RSS, SOAP и других XML-форматов
Под капотом
Проект использует:
- sax-js — для парсинга XML
- xmlbuilder-js — для генерации XML
Вывод: стоит ли использовать?
node-xml2js — это:
✅ Проверенное решение (существует с 2010 года) ✅ Простота использования ✅ Гибкость настроек ✅ Поддержка промисов ✅ Библиотека без зависимостей
Если ваш проект работает с XML в Node.js-окружении — обязательно попробуйте этот пакет. Он сэкономит вам кучу времени и нервов!
Установка:
npm install xml2js
# или
bower install xml2js
А вы уже используете xml2js в своих проектах? Делитесь опытом в комментариях!
