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-дневный пробный период без ограничений) и убедитесь, что программа стоит своих денег.
Некоторые из поддерживаемых преобразований форматов:
|
|
|
(включает 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
Development teams that convert XML to CSV, JSON, and PDF on servers via ActiveX or command line
Power server-side XML-to-CSV and XML-to-JSON tools
Web developers integrate Total XML ConverterX via ActiveX into ASP or PHP applications. Users upload XML files through a browser, the server converts them to CSV, JSON, or PDF silently with no pop-up messages, and returns the result. Sample code files are included to speed up integration.
Transform XML feeds into formats other systems require
Enterprise IT teams use Total XML ConverterX to bridge systems that speak different data languages. Convert XML exports from one platform into CSV for spreadsheet-based tools, JSON for web APIs, or PDF for human review — all automated via command line with original timestamps preserved.
Batch-convert XML data feeds in scheduled pipelines
Data engineering teams add Total XML ConverterX as a conversion step in ETL workflows. Nightly XML dumps from databases, partner APIs, or IoT systems are converted to CSV for analytics platforms or JSON for data lakes. Folder structure is preserved and errors are logged silently for monitoring.
Format or minify XML documents on the server
Content platforms and publishing systems use Total XML ConverterX to format raw XML into human-readable form for editors, or minify verbose XML to reduce storage and transfer size. Process sophisticated XML structures in batch while keeping the original document hierarchy intact.
Convert XML submissions to PDF reports for auditors
Regulated industries receive or generate XML data for compliance filings. Total XML ConverterX converts these XML files to PDF reports for auditor review or to CSV for import into compliance databases — running unattended on servers with no GUI interruptions and full error logging.
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
Обновлено Fri, 01 May 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-ом.Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.