MYMONDAY.ai
서비스스튜디오도구데이터·포맷73CSS 생성기19색상·이미지10인코딩·보안10웹·SEO11개발·데브옵스10파일·내보내기18계산기6가이드

XML CSV 변환기

반복되는 XML 요소의 목록을 레코드 하나당 한 행, 속성과 자식 요소 이름의 열을 가진 CSV 표로 바꿉니다.

  • 브라우저에서 처리
  • 가입 없음
  • 무료

도구 작업 공간

예제

옵션

이 경로의 요소 하나가 한 행이 됩니다. 자동은 가장 바깥에서 반복되는 요소를 고릅니다.

줄 끝

=, +, -, @로 시작하는 텍스트 앞에 '를 붙여 Excel·Sheets가 수식으로 실행하지 않게 합니다.

내려받는 파일에만 BOM을 붙여 엑셀에서 한글 등 non-ASCII 글자가 깨지지 않게 합니다. 복사한 텍스트에는 영향이 없습니다.

배열

XML → 데이터 매핑

속성은 이 문자로 시작하는 키가 되어 id="1"은 @id가 됩니다. 비우면 속성 이름 그대로 씁니다.

속성이나 자식 요소와 함께 있는 텍스트는 이 키에 담습니다.

끄면 <item>이 하나일 땐 객체, 여러 개일 땐 배열이 됩니다. 켜면 개수와 상관없이 구조가 같습니다.

끄면 모든 값이 문자열로 남습니다. 켜면 true/false, 정수, 소수는 해당 타입이 되고 007이나 긴 ID는 문자열로 둡니다.

XML 입력

18줄403byte

결과

⌘/Ctrl + Enter로 복사
결과 · data.csv
id,active,name,email,score

1,true,Ada Lovelace,ada@example.com,98.5

2,false,Grace Hopper,grace@example.com,91

3,true,Linus,,87.25

레코드 users/user · 3개 행

행3
열5
크기134byte

<users> 아래에 <user>가 여러 개 있는 목록이나 주문 피드처럼 목록이 담긴 XML 내보내기를 읽어, 반복되는 요소마다 CSV 한 행을 쓰는 XML CSV 변환기입니다. 레코드 경로 선택기는 요소가 반복되는 모든 경로를 행 수와 함께 보여 주고, 자동은 가장 바깥의 경로를 고릅니다. 더 안쪽 요소를 행으로 삼고 싶으면 다른 경로를 고르세요. XML은 페이지 안의 엄격한 XML 1.0 파서가 읽으며 오류는 줄과 열로 표시됩니다.

각 레코드는 공통 XML 규칙으로 매핑한 뒤 평평하게 펼칩니다. 속성과 자식 요소가 모두 열이 되고, 속성 접두사가 비어 있는 기본값에서는 id="1"이 그냥 id 열입니다. 중첩 요소는 customer.name 같은 점 이름이 되고, 없는 필드는 셀을 비워 두되 다른 행에서 열은 만들어집니다.

구분자는 쉼표, 세미콜론, 탭, 파이프 중에서 고르고 줄바꿈은 CRLF 또는 LF, 헤더 행은 켜고 끌 수 있습니다. 업로드는 없으며 최대 20 MiB를 로컬에서 변환하고, CSV를 복사하거나 data.csv로 내려받을 수 있습니다.

사용 방법

  1. XML 붙여넣기

    문서를 붙여 넣거나 반복 요소가 있는 예제를 고르세요. CSV가 바로 나타나고, XML이 올바르지 않으면 첫 문제의 줄과 열이 대신 표시됩니다.

  2. 레코드 경로 고르기

    선택기를 자동(가장 바깥에서 반복되는 요소)으로 두거나 store/orders/order 같은 다른 경로를 목록에서 고르세요. 고른 경로의 행 수가 옆에 표시됩니다.

  3. 구분자, 줄바꿈, 헤더 설정

    쉼표, 세미콜론, 탭, 파이프 중에서 고르고 CRLF 또는 LF를 정하며 헤더 행을 켜거나 끕니다. 유럽권 Excel 설정은 흔히 세미콜론을 기대합니다.

  4. 수식과 배열 처리 결정

    Excel이나 Sheets로 열 파일이라면 수식 무력화를 켜 두세요. 반복되는 자식 요소를 셀 하나의 JSON 텍스트로 둘지, 인덱스마다 열을 만들지도 고릅니다.

  5. 매핑 확인 후 복사·다운로드

    XML → 데이터 매핑 패널에서 속성 접두사를 되살릴 수 있어, 속성과 자식 요소의 이름이 같을 때 유용합니다. CSV를 복사하거나 data.csv로 내려받으세요.

작동 원리

무엇이 레코드인가

레코드 경로는 루트에서 시작하는 요소 이름의 연쇄이며 users/user가 그 예입니다. 이 경로의 요소 하나하나가 한 행이 됩니다. 선택기에는 같은 이름의 형제가 반복되는 경로만 가장 바깥부터 나열되고, 자동 모드는 그중 첫 번째를 택합니다. 반복되는 경로가 없으면 루트 요소 전체가 한 행으로 쓰입니다.

레코드 경로 바깥의 요소는 무시됩니다. <orders> 앞에 <meta> 블록이 있는 문서에서 store/orders/order를 고르면 메타데이터는 빠지는데, 표를 만들 때는 대개 그쪽이 원하는 결과입니다.

펼치기, 배열, 열 순서

각 레코드는 평평한 열 집합이 됩니다. 중첩 요소는 점 이름을 만들어 <customer><name>Ada</name></customer>가 customer.name이 됩니다. 반복되는 자식 요소는 셀 하나의 JSON 배열(["new","vip"] 등)이 되고, 인덱스 옵션에서는 tag.0, tag.1처럼 위치마다 열이 됩니다. 속성 옆의 텍스트는 텍스트 키(기본 #text) 이름의 열에 들어갑니다.

헤더는 모든 열을 처음 나타난 순서대로 합친 것이고, 해당 열이 없는 행은 셀이 빕니다. 필드는 구분자, 따옴표, 줄바꿈이 들어 있을 때만 따옴표로 감싸고 따옴표는 두 번 씁니다. RFC 4180이 설명하는 방식입니다. CRLF 줄바꿈이면 파일 끝에도 줄바꿈이 붙습니다.

스프레드시트 수식 삽입

=, +, -, @로 시작하는 텍스트 셀은 Excel이나 Google Sheets에서 CSV를 열 때 수식으로 실행될 수 있습니다. 수식 무력화를 켜면 그런 셀 앞에 작은따옴표가 붙고 몇 개를 바꿨는지 안내합니다. 숫자와 불리언은 건드리지 않으므로 실제 값 -5는 그대로입니다.

실제 예시

속성이 있고 필드가 빠진 사용자 목록
입력
<users>
  <user id="1" active="true"><name>Ada Lovelace</name><email>ada@example.com</email><score>98.5</score></user>
  <user id="2" active="false"><name>Grace Hopper</name><email>grace@example.com</email><score>91</score></user>
  <user id="3" active="true"><name>Linus</name><score>87.25</score></user>
</users>
출력
id,active,name,email,score
1,true,Ada Lovelace,ada@example.com,98.5
2,false,Grace Hopper,grace@example.com,91
3,true,Linus,,87.25

레코드 경로 자동은 users/user를 고릅니다. 속성 id와 active는 일반 열이 되고, Linus에는 email이 없어 셀이 빕니다. 여기서는 줄바꿈이 LF이고 기본값은 CRLF입니다.

중첩 요소와 반복되는 자식
입력
<store><orders>
<order id="1"><customer><name>Ada</name><city>London</city></customer><tag>new</tag><tag>vip</tag><total>120.5</total></order>
<order id="2"><customer><name>Grace</name><city>New York</city></customer><total>80</total></order>
<order id="3"><customer><name>Linus</name></customer><tag>bulk</tag><total>1200</total></order></orders></store>
출력
id,customer.name,customer.city,tag,total
1,Ada,London,"[""new"",""vip""]",120.5
2,Grace,New York,,80
3,Linus,,bulk,1200

첫 주문은 tag 요소가 둘이라 셀에 JSON 배열이 들어가고, 세 번째는 하나뿐이라 텍스트 bulk가 그대로 들어갑니다.

수식처럼 보이는 텍스트와 따옴표
입력
<rows><row id="1"><note>=SUM(A1:A9)</note><name>O'Brien</name></row><row id="2"><note>-5 degrees</note><name>한글, with comma</name></row></rows>
출력
id,note,name
1,'=SUM(A1:A9),O'Brien
2,'-5 degrees,"한글, with comma"

두 note가 수식 문자로 시작해 작은따옴표가 앞에 붙었고, 쉼표가 든 name은 따옴표로 감싸졌습니다. 무력화된 셀이 2개라고 안내됩니다.

자주 하는 실수

  • 요소 하나와 목록이 열을 바꿈

    위 예제처럼 <tag> 하나는 텍스트, 여러 개는 같은 열의 JSON 배열로 쓰입니다. 인덱스 옵션에서는 tag.0, tag.1과 별도의 tag 열이 생깁니다. 레코드마다 반복 자식 수가 다르면 출력을 확인하세요.

  • CSV에서는 항상 배열을 켜지 말 것

    이 스위치는 모든 자식을 배열로 감싸서, 인덱스 옵션과 함께 쓰면 열 이름이 customer.0.name.0, total.0처럼 됩니다. 평평한 표가 목적이면 꺼 두세요.

  • 레코드 경로를 잘못 고름

    후보가 여러 개이면 자동은 가장 바깥 경로를 택합니다. <channel> 하나가 <item> 여러 개를 감싼 피드라면 보통 item 경로가 원하는 행이므로 직접 고르세요.

  • 숫자와 앞자리 0

    타입 해석이 켜져 있어도 02134는 앞자리 0 때문에 텍스트로 남지만 24.50은 24.5로 쓰입니다. 모든 값을 쓴 그대로 옮기려면 해석을 끄세요.

  • Excel과 구분자

    여러 로캘의 Excel은 쉼표가 아니라 세미콜론을 기대하고, BOM이 없는 UTF-8을 잘못 읽을 수 있습니다. 열이 한 칸으로 뭉치면 구분자를 바꾸거나 데이터 가져오기 마법사로 여세요.

자주 묻는 질문

어떤 요소가 행이 되는지 어떻게 정하나요?

자동은 같은 이름의 형제 요소가 반복되는 가장 바깥 경로를 고릅니다. 레코드 경로 선택기에서 다른 반복 경로를 직접 고를 수도 있습니다.

XML 속성은 어떻게 되나요?

열이 됩니다. CSV에서는 속성 접두사가 기본적으로 비어 있어 id="1"이 id 열이 됩니다. 속성과 자식 요소 이름이 겹치면 매핑 패널에서 접두사를 지정하세요.

중첩 요소는 평평한 파일에서 어떻게 표현되나요?

customer.name 같은 점 이름의 열이 되며 더 깊은 단계도 점으로 이어집니다.

수식 무력화는 무슨 일을 하나요?

=, +, -, @로 시작하는 텍스트 셀 앞에 작은따옴표를 붙여, Excel과 Sheets가 수식이 아니라 텍스트로 다루게 합니다.

세미콜론이나 탭 구분자를 쓸 수 있나요?

네. 구분자는 쉼표, 세미콜론, 탭, 파이프 중에서 고르고 줄바꿈은 CRLF 또는 LF입니다.

XML이 업로드되나요?

아니요. 파싱과 CSV 생성이 브라우저 안에서 실행되며 최대 20 MiB까지 처리합니다. 매우 큰 출력은 행과 열 개수에 한도가 있습니다.

마지막 업데이트: