通过命令行转换 XML 至 JSON、XML、CSV、PDF
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
如果您正在寻找命令行 XML 转换器,那么无需再寻找了。Total XML ConverterX 将帮助您格式化 XML 文件或促进系统之间的数据交换。CoolUtils 拥有将近十年的各种转换器经验,为产品质量提供保证。现在下载免费试用版并进行 30 天的测试。
string src="C:\\test\\Source.XML";
string dest="C:\\test\\Dest.PDF";
XMLConverterX Cnv = new XMLConverterX();
Cnv.Convert(src, dest, "-c PDF -log c:\\test\\XML.log");
MessageBox.Show("Convert complete!");
dim C
Set C=CreateObject("XMLConverter.XMLConverterX")
C.Convert "c:\source.XML", "c:\dest.JSON", "-cJSON -log c:\XML.log"
set C = nothing
dim C
Set C=CreateObject("XMLConverter.XMLConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Rresponse.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.XML\";
$dest="C:\test.XLS\";
if (file_exists($dest)) unlink($dest);
$c= new COM("PDFConverter.PDFConverterX");
$c->convert($src,$dest, "-c XLS -log c:\pdf.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.pdf";
c.convert(src,dest, "-c PDF -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.pdf";
c.convert(src, dest, "-c PDF -log c:\\test\\XML.log");
if not os.path.exists(file_path):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c:=CreateOleObject('XMLConverter.XMLConverterX');
C.Convert('c:\test\source.XML', 'c:\test\dest.pdf', '-cPDF -log c:\test\XML.log');
IF c.ErrorMessage<> Then
ShowMessage(c.ErrorMessage);
end;
$src="C:\test.XML\";
$dest="C:\test.XLS\";
if (file_exists($dest)) unlink($dest);
$c= new COM("PDFConverter.PDFConverterX");
$c->convert($src,$dest, "-c XLS -log c:\pdf.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
use Win32::OLE; my $src="C:\\test\\test.XML"; my $dest="C:\\test\\test.pdf"; my $c = CreateObject Win32::OLE 'XMLConverter.XMLConverterX'; $c->convert($src,$dest, "-c pdf -log c:\\test\\XML.log"); print $c->ErrorMessage if -e $dest;
#includestatic const CLSID CLSID_XMLConverterX = {0x6B411E7E, 0x9503,0x4793,{0xA2, 0x87, 0x1F, 0x3B, 0xA8, 0x78, 0xB9, 0x1C}}; static const IID IID_IXMLConverterX = {0xEF633BED, 0xC414,0x49B0,{0x91, 0xFB, 0xC3, 0x9C, 0x3F, 0xE0, 0x08, 0x0D}}; #undef INTERFACE #define INTERFACE IXMLConverterX DECLARE_INTERFACE_(IXMLConverterX, IDispatch) { STDMETHOD(QueryInterface)(THIS_ REFIID, PVOID*) PURE; STDMETHOD(Convert)(THIS_ LPCTSTR, LPCTSTR, LPCTSTR) PURE; STDMETHOD(About)(THIS) PURE; //const SourceFile: WideString; const DestFile: WideString; const Params: WideString; safecall; }; typedef HRESULT (__stdcall *hDllGetClassObjectFunc) (REFCLSID, REFIID, void **); int main () { HRESULT hr; if (CoInitialize(NULL)) { printf ("Error in CoInitialize."); return -1; } LPCTSTR lpFileName = "XMLConverter.dll"; HMODULE hModule; hModule = LoadLibrary (lpFileName); printf ("hModule: %d\n", hModule); if (hModule == 0) { printf ("Error in LoadLibrary."); return -1; } hDllGetClassObjectFunc hDllGetClassObject = NULL; hDllGetClassObject = (hDllGetClassObjectFunc) GetProcAddress (hModule, "DllGetClassObject"); if (hDllGetClassObject == 0) { printf ("Error in GetProcAddress."); return -1; } IClassFactory *pCF = NULL; hr = hDllGetClassObject (&CLSID_XMLConverterX, &IID_IClassFactory, (void **)&pCF); /* Can't load with different ID */ printf ("hr hDllGetClassObject: %d\n", hr); if (!SUCCEEDED (hr)) { printf ("Error in hDllGetClassObject."); return -1; } IXMLConverterX *pIN; hr = pCF->lpVtbl->CreateInstance (pCF, 0, &IID_IXMLConverterX, (void **)&pIN); printf ("hr CreateInstance: %d\n", hr); if (!SUCCEEDED (hr)) { printf ("Error in hDllGetClassObject."); return -1; } hr = pCF->lpVtbl->Release (pCF); printf ("hr Release: %d\n", hr); if (!SUCCEEDED (hr)) { printf ("Error in Release."); return -1; } hr = pIN->lpVtbl->About (pIN); printf ("hr About: %d\n", hr); if (!SUCCEEDED (hr)) { printf ("Error in About."); return -1; } hr = pIN->lpVtbl->Convert (pIN, "test.pdf", "test.html","-cHTML"); printf ("hr Convert: %d\n", hr); if (!SUCCEEDED (hr)) { printf ("Error in Convert."); return -1; } return 0; }
"Total XML ConverterX 似乎非常适合我的使用,尽管我们只用它来将旧的 .xml 文件转换为其他格式。”
"我们选择这个程序是因为它能够处理 XSLT 文件。我们有超过 6000 个 XML,转换器在不到一小时内完成了工作!谢谢!”
Jean Robitaille | Sparktown Christian School
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