Convert XML to JSON, CSV, XLSX, PDF, SQL on Windows servers — with XSLT support and no XML libraries required.
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016 / 2019/2022 Server
and
Docker / Citrix / Wine
Total XML Converter X is a server-side SDK that converts XML to JSON, CSV, XLSX, PDF, HTML, SQL, DBF, Access, and 10+ other formats — with full XSLT support and no external XML libraries on the server. It runs headless: no GUI, no dialogs, no popups. Total XML Converter X ships with both a command-line binary and an ActiveX/COM interface, so it drops into ASP, PHP, .NET, Python, Ruby, Java, and any other COM-aware backend. Output formats split into two groups:
-xslt — no two-step pipeline needed
table (expand repeated elements into rows), highlight (syntax-coloured tree for human review), report (tabular report from a tables definition file)
-Recurse -kfs), batch combining of multiple XMLs into one PDF (-combine -sort name), and queue-file processing (-list) for unattended runs. Server-friendly flags -msuccess, -merror, and -IgnoreInvalidSource let a single bad file route to a quarantine folder without aborting the batch.The program processes XML directly — no .NET XML serializer needed, no Saxon or Xalan installation, no msxml dependency surprises after a Windows update.
High converting speed and batch conversions result in a simple and boredom-free process. Try it for free (30 days trial period, no limitations) and find out that it is really worth its money.
Some of the currently supported file format conversions:
|
|
|
(includes 30 day FREE trial)
(only $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 seems to be perfect for my use, though we use it only to convert old .xml files to other formats. We chose the program for the ability to process XSLT files. We had over 6,000 XMLs and the converter did the job in less than an hour. Thank you!"
Jean Robitaille
Sparktown Christian School
"We translate partner XML feeds (orders, ASN, invoices) into our internal JSON schema. Total XML Converter X with -xslt is the engine: each partner has their own stylesheet, the converter applies it on the fly, and the JSON drops straight into Kafka. We replaced a Java/Saxon container that was eating 2GB of RAM for the same job. The Windows binary uses around 60MB and runs at twice the throughput."
Lukas R.
Senior Backend Developer at an EDI integration vendor
"Our customers submit XBRL/XML compliance filings that we have to render as PDF for human auditors. Total XML Converter X with -method report and a tables definition file produces clean, paginated PDF output without us writing our own renderer. The -msuccess/-merror queue routing is exactly what we needed for the watcher-driven pipeline. Five years in production, no surprises."
Carmen V.
DevOps Engineer at a regulatory-reporting platform
"Bundled Total XML Converter X into our data-migration tool under the Royalty-Free License. The one-time per-project fee was a fraction of what Altova MapForce wanted on a per-developer subscription. Our installer ships and registers the ActiveX, our app calls it directly, end users see only our UI. The 32-bit ActiveX limitation cost us a couple of days of pipeline rework, but support was responsive when we asked about workarounds."
Halil B.
Independent Software Vendor
"Customers email us nightly XML dumps from twenty different ERP systems. We use Total XML Converter X to flatten everything into XLSX with -detectcell -plain so analysts can pivot directly without a separate ETL tool. Throughput is around 200 XMLs per second on our hardware for typical sub-MB files. The CLI is deterministic across runs; same input, same flags, bit-identical bytes."
Felipe O.
Lead .NET Developer at a SaaS analytics firm
Total XML Converter X ships with XMLConverterX.exe, a console binary you can drive from scripts, scheduled tasks, CI runners, or any backend service. Output covers the data side (JSON, CSV, Excel, SQL, DBF, Access) and the document side (PDF, HTML, DOC, RTF, TXT, TIFF, JPEG, PNG). The recipes below cover the cases we hear about most often from SDK customers.
The smallest possible call — one source, one output, one target format.
XMLConverterX.exe "C:\inbox\invoice.xml" "C:\out\invoice.pdf" -cPDF
The fastest way to feed legacy XML into a modern JSON pipeline. Mask matches every XML in the folder; output gets one JSON file per input.
XMLConverterX.exe "C:\inbox\*.xml" "C:\out\" -cJSON
-detectcell infers numeric, date, and text columns from the data so figures stay summable in the resulting workbook. -plain flattens nested elements into one wide table.
XMLConverterX.exe "C:\reports\*.xml" "C:\out\" -cExcel -detectcell -plain
European locales, downstream parsers, and spreadsheet imports all want different separators. -separator sets the field separator; -comma sets the quote character (use char codes like #39 for an apostrophe).
XMLConverterX.exe "C:\inbox\*.xml" "C:\out\" -cCSV -separator ";" -comma "\""
When the source XML doesn't match the target schema, run it through an XSLT first. -xslt applies the stylesheet to every input on the fly — no two-step pipeline needed.
XMLConverterX.exe "C:\inbox\*.xml" "C:\out\" -cPDF -xslt "C:\xsl\invoice-to-pdf.xsl"
The -method flag controls how XML structure becomes visible output. table expands repeated elements into rows; highlight renders the XML tree with syntax colouring (good for human review); report generates a tabular report based on a tables definition file.
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"
For data lakes and document archives organised in subfolders. -Recurse walks subdirectories; -kfs recreates the same tree on the output side instead of flattening everything into one bucket.
XMLConverterX.exe "C:\datalake\*.xml" "C:\out\" -cJSON -Recurse -kfs
Roll up a folder of small XMLs into a single multi-page PDF for review or audit. -sort name keeps the order predictable.
XMLConverterX.exe "C:\reports\*.xml" "C:\out\daily-report.pdf" -cPDF -combine -sort name
The standard backend pattern: a watcher drops files into inbox, the converter clears it, processed files land in done, files it couldn't handle land in quarantine for review. -IgnoreInvalidSource keeps a single bad file from aborting the whole batch.
XMLConverterX.exe "C:\inbox\*.xml" "C:\out\" -cJSON -msuccess "C:\done" -merror "C:\quarantine" -IgnoreInvalidSource -threads 0
When upstream writes a queue file and the converter consumes it, the file paths shouldn't be encoded in the command line. -list reads file masks (one per line) from a text file. The destination accepts <DATE> and <TIME> macros so each run gets its own bucket.
XMLConverterX.exe -list "C:\queues\nightly.txt" "C:\out\<DATE>\" -cPDF -log "C:\logs\xmlcx.log" -verbosity detail -logmode append
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.
Updated Fri, 01 May 2026
(only $750.00)
-c flag.new COM("XMLConverter.XMLConverterX") in PHP, new XMLConverterX() in .NET, win32com.client.Dispatch in Python, WIN32OLE.new in Ruby. Alternatively, the XMLConverterX.exe command-line binary can be invoked from any process, scheduler, or shell script. Direct streaming via ConvertToStream is also available for ASP/PHP web responses.-xslt "C:\xsl\stylesheet.xsl" to apply an XSLT to every input XML on the fly. The output is then written in the format selected by -c. This collapses what would otherwise be a two-step pipeline (XSLT processor + converter) into a single binary call. We use this for invoice formats, EDI translations, and schema-mapping workflows.-msuccess "C:\done" moves successfully-converted files into a done folder, -merror "C:\quarantine" routes failures to a quarantine folder, and -IgnoreInvalidSource keeps a single bad file from aborting the whole batch. Combined with -list queue-file input and -log -verbosity detail, the binary fits a watcher-driven backend pipeline cleanly.Updated Fri, 01 May 2026
(only $750.00)
Download free trial and convert your files in minutes.
No credit card or email required.