XML в JSON, XML, CSV, PDF через командную строку
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
Total XML Converter X — это серверный SDK, который конвертирует XML в JSON, CSV, XLSX, PDF, HTML, SQL, DBF, Access и более 10 других форматов — с полной поддержкой XSLT и без внешних XML-библиотек на сервере. Работает в headless-режиме: без графического интерфейса, без диалогов, без всплывающих окон. Total XML Converter X поставляется с консольным бинарником и интерфейсом ActiveX/COM, поэтому интегрируется в ASP, PHP, .NET, Python, Ruby, Java и любой другой COM-совместимый бэкенд. Выходные форматы делятся на две группы:
-xslt — двухэтапный конвейер не нужен
table (разворачивает повторяющиеся элементы в строки), highlight (дерево с подсветкой синтаксиса для просмотра человеком), report (табличный отчёт по файлу определения таблиц)
-Recurse -kfs), пакетное объединение нескольких XML в один PDF (-combine -sort name) и обработку очередей через файл-список (-list) для автоматических запусков. Серверные флаги -msuccess, -merror и -IgnoreInvalidSource позволяют отправить один битый файл в карантин, не прерывая весь пакет.Программа обрабатывает XML напрямую — без XML-сериализатора .NET, без установки Saxon или Xalan, без сюрпризов с зависимостями msxml после обновления Windows.
Высокая скорость преобразования и пакетная обработка превращают конвертацию в простой и нескучный процесс. Попробуйте бесплатно (30-дневный пробный период без ограничений) и убедитесь, что программа стоит своих денег.
Некоторые из поддерживаемых преобразований форматов:
|
|
|
LLM-агенты (Claude, ChatGPT, Cursor, Cline) и поисковые фреймворки (LangChain, LlamaIndex, Haystack) плохо читают сырой XML — вложенные теги и атрибуты для embedding-моделей это шум. Total XML Converter X пишет XML в GitHub-Flavored Markdown со структурированным фронтматтером и опциональным Docling-совместимым sidecar, поэтому XML-документ попадает в ваш векторный индекс чистым section-aware представлением — с иерархией элементов, развёрнутой в Markdown-заголовки, и повторяющимися элементами, превращёнными в таблицы, а не одной длинной строкой из угловых скобок.
Что вы получаете, выбирая Markdown на выходе:
#, дочерние элементы — ## / ### / #### по глубине; атрибуты рендерятся как key-value список сразу под каждым заголовком
-xslt stylesheet.xsl, чтобы перестроить XML перед Markdown-рендерингом — тот же одношаговый пайплайн, что используется для остальных форматов вывода
source_file, format (MIME), root_element, namespaces, element_count, глубина, обнаруженная схема (когда есть ссылка на XSD/DTD), generator, created и binary_hash для provenance
.docling.json — JSON по схеме Docling с типизированными колонками из автоопределённых таблиц (с единицами вроде EUR, pcs, %), якорями отдельных элементов обратно в исходный XML (XPath), картой namespace и массивом chunks_hint, который читает ваш сплиттер
Это CoolUtils RAG Adapter — единый Markdown-контракт, общий для всех продуктов Total Converter X. Полная спецификация, пример .md + .docling.json и фрагменты для интеграции живут на странице Coolutils Converter X — RAG Adapter.
(включает 30-дневный бесплатный пробный период)
(только $750.00)
string src = @"C:\test\Source.xml";
string dest = @"C:\test\Dest.json";
var cnv = new XMLConverterX();
cnv.Convert(src, dest, "-cJSON -log c:\\test\\XML.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\XMLConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.xml";
var outPath = Path.GetTempFileName() + ".json";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"{srcPath} {outPath}";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
int sleepCounter = 10;
while(!File.Exists(outPath) && sleepCounter > 0)
{
System.Threading.Thread.Sleep(1000);
sbLogs.AppendLine("sleep...");
sleepCounter--;
}
if (File.Exists(outPath))
sbLogs.AppendLine("Conversion complete successfully.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("XMLConverter.XMLConverterX")
C.Convert "c:\source.xml", "c:\dest.json", "-cJSON -log c:\XML.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("XMLConverter.XMLConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.json"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\Source.xml", "C:\www\ASP", "-cJSON -log c:\XML.log")
set C = nothing
$src="C:\\test\\test.xml";
$dest="C:\\test\\test.json";
if (file_exists($dest)) unlink($dest);
$c= new COM("XMLConverter.XMLConverterX");
$c->convert($src,$dest, "-cJSON -log c:\\test\\XML.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('XMLConverter.XMLConverterX')
src = "C:\\test\\test.xml"
dest = "C:\\test\\test.json"
c.convert(src, dest, "-cJSON -log c:\\test\\XML.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("XMLConverter.XMLConverterX")
src = "C:\\test\\test.xml"
dest = "C:\\test\\test.json"
c.convert(src, dest, "-cJSON -log c:\\test\\XML.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('XMLConverter.XMLConverterX');
c.Convert('c:\test\source.xml', 'c:\test\dest.json', '-cJSON -log c:\test\XML.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("XMLConverter.XMLConverterX");
c.Convert("C:\\test\\source.xml", "C:\\test\\dest.json", "-cJSON");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.xml"; my $dest = "C:\\test\\test.json"; my $c = CreateObject Win32::OLE 'XMLConverter.XMLConverterX'; $c->convert($src, $dest, "-cJSON -log c:\\test\\XML.log"); print $c->ErrorMessage if -e $dest;
"Total XML Converter X идеально подходит для наших задач, хотя мы используем его только для конвертации старых .xml-файлов в другие форматы. Программу выбрали за возможность обрабатывать файлы XSLT. У нас было больше 6000 XML, и конвертер справился меньше чем за час. Спасибо!"
Jean Robitaille
Sparktown Christian School
"Мы преобразуем партнёрские XML-фиды (заказы, ASN, счета) в нашу внутреннюю JSON-схему. Total XML Converter X с -xslt — это движок: у каждого партнёра своя таблица стилей, конвертер применяет её на лету, и JSON падает прямо в Kafka. Мы заменили Java/Saxon-контейнер, который съедал 2 ГБ RAM на той же задаче. Бинарник Windows использует около 60 МБ и работает с вдвое большей пропускной способностью."
Lukas R.
Senior Backend Developer at an EDI integration vendor
"Наши клиенты сдают XBRL/XML-отчётность для регулятора, которую мы должны рендерить в PDF для аудиторов-людей. Total XML Converter X с -method report и файлом определения таблиц выдаёт чистый PDF с разбиением на страницы — нам не пришлось писать собственный рендерер. Маршрутизация очередей -msuccess/-merror — ровно то, что было нужно для пайплайна на watcher-ах. Пять лет в продакшне, без сюрпризов."
Carmen V.
DevOps Engineer at a regulatory-reporting platform
"Встроили Total XML Converter X в наш инструмент миграции данных по Royalty-Free лицензии. Разовая оплата за проект оказалась долей того, что Altova MapForce хотел брать с разработчика по подписке. Наш установщик ставит и регистрирует ActiveX, наше приложение вызывает его напрямую, конечные пользователи видят только наш UI. Ограничение 32-битного ActiveX стоило нам пары дней переделки пайплайна, но поддержка отвечала быстро, когда мы спрашивали про обходные пути."
Halil B.
Independent Software Vendor
"Клиенты каждую ночь присылают нам XML-выгрузки из двадцати разных ERP-систем. Мы используем Total XML Converter X, чтобы свести всё в XLSX через -detectcell -plain, и аналитики могут крутить сводные таблицы напрямую без отдельного ETL. Пропускная способность около 200 XML в секунду на нашем железе для типичных файлов меньше мегабайта. CLI детерминирован между запусками: те же входные данные, те же флаги — побитово идентичный результат."
Felipe O.
Lead .NET Developer at a SaaS analytics firm
Команды разработчиков, конвертирующие XML в CSV, JSON и PDF на серверах через ActiveX или командную строку
Серверные инструменты XML-в-CSV и XML-в-JSON на базе ActiveX
Веб-разработчики интегрируют Total XML ConverterX через ActiveX в приложения ASP или PHP. Пользователи загружают XML-файлы через браузер, сервер незаметно конвертирует их в CSV, JSON или PDF без всплывающих сообщений и возвращает результат. В комплект включены образцы кода для ускорения интеграции.
Преобразование XML-фидов в форматы, требуемые другими системами
Корпоративные ИТ-команды используют Total XML ConverterX для интеграции систем, говорящих на разных языках данных. Конвертируйте XML-экспорты из одной платформы в CSV для инструментов на основе таблиц, JSON для веб-API или PDF для ручного просмотра — всё автоматически через командную строку с сохранением оригинальных временных меток.
Пакетная конвертация XML-фидов в плановых конвейерах
Команды по разработке данных добавляют Total XML ConverterX как шаг конвертации в ETL-рабочие процессы. Ночные XML-выгрузки из баз данных, партнёрских API или IoT-систем конвертируются в CSV для аналитических платформ или JSON для озёр данных. Структура папок сохраняется, ошибки записываются в лог незаметно для мониторинга.
Форматирование или минификация XML-документов на сервере
Контент-платформы и издательские системы используют Total XML ConverterX для форматирования сырого XML в читаемую форму для редакторов или минификации многословного XML для уменьшения размера хранилища и объёма передачи. Обрабатывайте сложные XML-структуры пакетно, сохраняя исходную иерархию документа.
Конвертация XML-заявок в PDF-отчёты для аудиторов
Регулируемые отрасли получают или генерируют XML-данные для регуляторных заявок. Total XML ConverterX конвертирует эти XML-файлы в PDF-отчёты для проверки аудиторами или в CSV для импорта в базы данных соответствия нормам — работая без присмотра на серверах без прерываний интерфейса и с полным ведением журнала ошибок.
Total XML Converter X поставляется с XMLConverterX.exe — консольной программой, которую можно запускать из скриптов, планировщика задач, CI-раннеров или любого серверного сервиса. Вывод покрывает сторону данных (JSON, CSV, Excel, SQL, DBF, Access) и сторону документов (PDF, HTML, DOC, RTF, TXT, TIFF, JPEG, PNG). Приведённые ниже рецепты охватывают сценарии, о которых чаще всего спрашивают клиенты SDK.
Минимально возможный вызов — один источник, один вывод, один целевой формат.
XMLConverterX.exe "C:\inbox\invoice.xml" "C:\out\invoice.pdf" -cPDF
Самый быстрый способ скармливать устаревший XML в современный JSON-пайплайн. Маска совпадает с каждым XML в папке; вывод даёт по одному JSON-файлу на вход.
XMLConverterX.exe "C:\inbox\*.xml" "C:\out\" -cJSON
-detectcell выводит числовые, датовые и текстовые столбцы из данных, чтобы цифры оставались суммируемыми в результирующей книге. -plain сплющивает вложенные элементы в одну широкую таблицу.
XMLConverterX.exe "C:\reports\*.xml" "C:\out\" -cExcel -detectcell -plain
Европейские локали, нижестоящие парсеры и импорты в таблицы — всем нужны разные разделители. -separator задаёт разделитель полей; -comma задаёт символ кавычек (используйте коды символов, например #39 для апострофа).
XMLConverterX.exe "C:\inbox\*.xml" "C:\out\" -cCSV -separator ";" -comma "\""
Когда исходный XML не соответствует целевой схеме, прогоните его через XSLT первым делом. -xslt применяет таблицу стилей к каждому входу на лету — пайплайн в два шага не нужен.
XMLConverterX.exe "C:\inbox\*.xml" "C:\out\" -cPDF -xslt "C:\xsl\invoice-to-pdf.xsl"
Флаг -method управляет тем, как структура XML становится видимым выводом. table разворачивает повторяющиеся элементы в строки; highlight рендерит дерево XML с подсветкой синтаксиса (хорошо для человеческого обзора); report генерирует табличный отчёт на основе файла определения таблиц.
XMLConverterX.exe "C:\inbox\config.xml" "C:\out\config.pdf" -cPDF -method highlight
XMLConverterX.exe "C:\inbox\orders.xml" "C:\out\orders.xlsx" -cExcel -method report -tables "C:\schemas\orders.tbl"
Для озёр данных и архивов документов, организованных в подпапках. -Recurse обходит подкаталоги; -kfs воссоздаёт то же дерево на стороне вывода вместо того, чтобы сваливать всё в одну корзину.
XMLConverterX.exe "C:\datalake\*.xml" "C:\out\" -cJSON -Recurse -kfs
Сверните папку маленьких XML в один многостраничный PDF для обзора или аудита. -sort name держит порядок предсказуемым.
XMLConverterX.exe "C:\reports\*.xml" "C:\out\daily-report.pdf" -cPDF -combine -sort name
Стандартный серверный паттерн: наблюдатель кладёт файлы в inbox, конвертер их разбирает, обработанные файлы попадают в done, файлы, которые не удалось обработать, — в quarantine для разбора. -IgnoreInvalidSource не даёт одному плохому файлу прервать весь пакет.
XMLConverterX.exe "C:\inbox\*.xml" "C:\out\" -cJSON -msuccess "C:\done" -merror "C:\quarantine" -IgnoreInvalidSource -threads 0
Когда вышестоящий процесс пишет файл-очередь, а конвертер его разбирает, пути к файлам не должны быть зашиты в командной строке. -list читает маски файлов (по одной на строку) из текстового файла. Назначение принимает макросы <DATE> и <TIME>, поэтому каждый запуск получает свою корзину.
XMLConverterX.exe -list "C:\queues\nightly.txt" "C:\out\<DATE>\" -cPDF -log "C:\logs\xmlcx.log" -verbosity detail -logmode append
Обновлено Thu, 11 Jun 2026
(только $750.00)
-c.new COM("XMLConverter.XMLConverterX") в PHP, new XMLConverterX() в .NET, win32com.client.Dispatch в Python, WIN32OLE.new в Ruby. В качестве альтернативы консольный бинарник XMLConverterX.exe можно вызвать из любого процесса, планировщика или shell-скрипта. Также доступна прямая потоковая передача через ConvertToStream для веб-ответов ASP/PHP.-xslt "C:\xsl\stylesheet.xsl", чтобы применить XSLT к каждому входному XML на лету. Затем результат записывается в формате, выбранном через -c. Это сворачивает двухэтапный конвейер (процессор XSLT + конвертер) в один вызов бинарника. Мы используем это для форматов счетов, EDI-преобразований и сценариев маппинга схем.-msuccess "C:\done" переносит успешно сконвертированные файлы в папку готового, -merror "C:\quarantine" направляет неудачи в карантин, а -IgnoreInvalidSource не даёт одному битому файлу прервать весь пакет. В сочетании с очередью -list и -log -verbosity detail бинарник аккуратно вписывается в пайплайн, управляемый watcher-ом..md в качестве выходного формата, и конвертер запишет иерархию элементов XML как Markdown-заголовки: корень — #, дочерние элементы — ##/###/#### по глубине, атрибуты появляются как key-value список под каждым заголовком. Повторяющиеся сиблинги с одинаковым тегом и идентичной формой потомков автоматически распознаются и рендерятся как GFM-таблицы с типизированными колонками — тот же рендеринг, что и для XML-в-XLSX. YAML-фронтматтер несёт source_file, root_element, namespaces, element_count, обнаруженную схему (когда есть ссылка на XSD/DTD) и бинарный хэш. Это часть CoolUtils RAG Adapter — тот же Markdown-контракт разделяют все продукты Total Converter X.binary_hash для provenance и массив chunks_hint. Включается флагом -Docling в командной строке.-xslt "C:\xsl\reshape.xsl" вместе с -cMD -Docling, и XSLT будет применён к каждому входу на лету, после чего результат запишется как Markdown. Это сворачивает то, что иначе было бы двушаговым пайплайном (XSLT-процессор + конвертер), в один вызов бинарника — полезно для трансляций EDI, форматов счетов и воркфлоу со schema-mapping, где результат должен попасть в RAG-индекс в конкретной нормализованной форме..md — это обычный GFM с YAML-фронтматтером, поэтому его напрямую читают UnstructuredMarkdownLoader из LangChain, MarkdownReader из LlamaIndex, MarkdownToDocument из Haystack и MCP-файловые инструменты Claude Code. Поскольку XPath элементов записаны в sidecar, цитата в ответе модели может разрешаться в конкретный исходный элемент. Для Claude, ChatGPT или любого чат-интерфейса вы можете вставить Markdown в контекст как есть.Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.