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는 XML을 JSON, CSV, XLSX, PDF, HTML, SQL, DBF, Access를 비롯한 10여 가지 형식으로 변환하는 서버 측 SDK입니다 — 완전한 XSLT 지원을 제공하며 서버에 외부 XML 라이브러리가 필요 없습니다. 헤드리스로 실행됩니다: GUI도, 대화상자도, 팝업도 없습니다. 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을 직접 처리합니다 — .NET XML 직렬화기가 필요 없고, Saxon이나 Xalan 설치도 불필요하며, Windows 업데이트 후 msxml 의존성 문제로 놀랄 일도 없습니다.
높은 변환 속도와 일괄 변환 덕분에 작업이 단순하고 지루하지 않습니다. 30일 무료 평가판으로 제한 없이 직접 사용해 보고 충분히 가치 있는 제품임을 확인해 보세요.
현재 지원되는 파일 형식 변환 일부:
|
|
|
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 파일을 처리할 수 있다는 점 때문에 이 프로그램을 선택했습니다. 6,000개가 넘는 XML이 있었는데 변환기가 한 시간도 안 걸려 작업을 끝냈습니다. 감사합니다!"
Jean Robitaille
Sparktown Christian School
"저희는 파트너 XML 피드(주문, ASN, 인보이스)를 내부 JSON 스키마로 변환합니다. -xslt와 함께 사용하는 Total XML Converter X가 그 엔진입니다: 각 파트너마다 자체 스타일시트가 있고, 변환기가 즉시 적용해 JSON이 바로 Kafka로 전달됩니다. 같은 작업을 위해 2GB 램을 잡아먹던 Java/Saxon 컨테이너를 교체했습니다. Windows 바이너리는 약 60MB만 사용하며 처리량은 두 배입니다."
Lukas R.
Senior Backend Developer at an EDI integration vendor
"저희 고객은 XBRL/XML 규정 준수 문서를 제출하고, 저희는 이를 사람 감사인을 위해 PDF로 렌더링해야 합니다. -method report와 테이블 정의 파일을 사용하는 Total XML Converter X는 자체 렌더러를 작성하지 않고도 깨끗하고 페이지가 매겨진 PDF 출력을 생성합니다. -msuccess/-merror 큐 라우팅은 워처 기반 파이프라인에 정확히 필요한 기능이었습니다. 5년간 운영 중이며 문제가 전혀 없었습니다."
Carmen V.
DevOps Engineer at a regulatory-reporting platform
"Total XML Converter X를 로열티 프리 라이선스로 저희 데이터 마이그레이션 도구에 번들링했습니다. 일회성 프로젝트당 비용은 Altova MapForce가 개발자당 구독으로 요구하던 금액의 일부에 불과했습니다. 저희 설치 프로그램이 ActiveX를 배포 및 등록하고, 앱이 직접 호출하며, 최종 사용자는 저희 UI만 보게 됩니다. 32비트 ActiveX 제약 때문에 파이프라인을 재작업하느라 며칠이 들었지만, 우회 방법을 문의했을 때 지원팀의 응답이 빨랐습니다."
Halil B.
Independent Software Vendor
"고객들은 매일 밤 20개의 서로 다른 ERP 시스템에서 XML 덤프를 이메일로 보냅니다. 저희는 Total XML Converter X를 -detectcell -plain과 함께 사용해 모든 것을 XLSX로 평탄화하고, 분석가들이 별도의 ETL 도구 없이 바로 피벗할 수 있도록 합니다. 저희 하드웨어에서 일반적인 1MB 미만 파일 기준 처리량은 초당 약 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
-c 플래그를 통해 위 형식 중 어느 것으로든 출력할 수 있습니다.new COM("XMLConverter.XMLConverterX"), .NET에서는 new XMLConverterX(), Python에서는 win32com.client.Dispatch, Ruby에서는 WIN32OLE.new. 또는 XMLConverterX.exe 명령줄 바이너리를 모든 프로세스, 스케줄러, 셸 스크립트에서 호출할 수 있습니다. ASP/PHP 웹 응답을 위한 ConvertToStream을 통한 직접 스트리밍도 사용 가능합니다.-xslt "C:\xsl\stylesheet.xsl"을 사용하면 모든 입력 XML에 즉시 XSLT를 적용합니다. 그런 다음 출력은 -c로 선택한 형식으로 작성됩니다. 이렇게 하면 두 단계 파이프라인(XSLT 프로세서 + 변환기)이 단일 바이너리 호출로 통합됩니다. 우리는 인보이스 형식, EDI 변환, 스키마 매핑 워크플로에서 이 기능을 사용합니다.-msuccess "C:\done"은 변환에 성공한 파일을 done 폴더로 이동시키고, -merror "C:\quarantine"은 실패한 파일을 격리 폴더로 라우팅하며, -IgnoreInvalidSource는 잘못된 파일 하나로 인해 전체 배치가 중단되는 것을 방지합니다. -list 큐 파일 입력 및 -log -verbosity detail과 결합하면 이 바이너리는 워처 기반 백엔드 파이프라인에 깔끔하게 들어맞습니다.무료 평가판을 다운로드하고 몇 분 만에 파일을 변환하세요.
신용카드나 이메일이 필요하지 않습니다.