XML 엑셀 변환
XML 내보내기 파일, 피드, 데이터 파일을 서식 있는 엑셀 시트로 바꿉니다. 반복되는 레코드를 알아서 찾아 주고, 속성과 중첩 요소를 열로 배치하며, 아무것도 저장하지 않습니다.
- 저장되지 않음
- 대기열 없음, 기다림 없음
- 회원가입 없음, 워터마크 없음
사용 방법
XML 추가
.xml 파일을 끌어다 놓거나 XML을 붙여 넣으세요. Excel 자체의 XML 스프레드시트 2003 파일도 됩니다.
레코드 선택
product, item, row처럼 반복되는 요소를 자동으로 골라 주며, 파일 안의 다른 표도 모두 목록으로 보여 주고 실시간 미리보기를 제공합니다.
다운로드
열마다 숫자와 날짜 형식이 지정되고, 굵은 글씨에 필터를 걸 수 있는 머리글 행이 있는 .xlsx 파일을 받습니다.
트리에서 행 찾기
XML에는 표라는 개념이 없으므로, 가장 먼저 어떤 요소가 레코드인지 가려내야 합니다. 믿을 만한 신호는 반복입니다. 같은 이름의 자식을 여러 개 가진 부모 요소는 거의 언제나 레코드 목록이며, 그 자식들의 하위 요소와 속성이 열이 됩니다. 내보내기 파일, 피드, API 응답, 설정 덤프 등 데이터 XML은 모두 같은 방식으로 만들어지므로, 이 방법은 압도적 다수의 경우에 통합니다.
속성과 자식 요소는 모두 열로 바뀝니다. XML에는 같은 내용을 표현하는 방법이 두 가지 있고 시스템마다 다르게 고르기 때문에 이렇게 해야 합니다. 어떤 내보내기는 id="42"처럼 속성으로 쓰고, 어떤 것은 <id>42</id>처럼 요소로 쓰며, 한 문서 안에서 둘 다 쓰는 경우도 있습니다. 표에서는 이 구분이 중요하지 않고 여러분도 신경 쓸 필요가 없으므로 둘 다 열로 들어오며, 같은 이름이 두 형태로 나와도 충돌하지 않도록 속성에는 표시를 붙입니다.
한 단계보다 깊은 중첩은 중첩 JSON과 같은 방식으로 요소 이름을 이어 붙여 평평하게 만듭니다. 한 주문 안의 주문 항목 세 줄처럼 레코드 안에 반복되는 자식이 있으면, 표에서는 주변 내용을 모두 복제하지 않고는 이를 행으로 나타낼 수 없으므로 반복되는 값을 셀 안에 그대로 둡니다. 열 이름에서는 네임스페이스를 제거합니다. 스프레드시트에서 ns2:customerName이라는 열 이름은 아무에게도 도움이 되지 않기 때문이며, 값 자체는 건드리지 않습니다.
글로 이루어진 XML에는 찾을 표가 없어 변환 결과가 좋지 않습니다. XHTML 페이지, DocBook 문서, ePub 챕터, SVG 그림은 데이터 세트가 아니라 문서입니다. 구조가 본래 중첩되고 불규칙하며, 행을 만들 반복 레코드가 없습니다. 변환하면 무언가가 나오기는 하지만 쓸모 있는 결과는 아닙니다. 이 페이지는 데이터 XML을 위한 것이며, 이 차이를 분명히 아는 것이 어떤 세부 조정보다 시간을 더 아껴 줍니다.
다른 작업이 필요할 때
구조를 알고 있다면 추론에 맡기지 말고 직접 추출하세요. xmlstarlet sel -t -m "//order" -v "@id" -o "," -v "customer" -n data.xml은 XPath 식으로 원하는 필드만 정확히 뽑아내며, xq는 jq 스타일 문법으로 같은 일을 합니다. 어쩌다 잘 된 변환과 파이프라인에 넣을 수 있는 변환의 차이가 바로 여기에 있습니다.
아주 큰 파일에는 이 방식 전체가 맞지 않습니다. 문서를 통째로 메모리에 불러와 분석하는데, 트리로 분석한 XML은 보통 파일 크기의 몇 배를 차지합니다. Python의 iterparse나 여러 언어의 SAX 같은 스트리밍 파서는 수 GB짜리 문서도 일정한 메모리로 훑어 나가며, 수백 MB를 넘어서면 사실상 유일한 현실적인 방법입니다.
자주 묻는 질문
XML의 어느 부분이 표인지 어떻게 아나요?
레코드란 같은 부모 아래에서 반복되는 요소입니다. <catalog> 안의 모든 <book>, RSS 채널 안의 모든 <item>이 그렇습니다. 각 그룹을 레코드 수와 필드 수로 평가해 가장 좋은 것을 고르고, 나머지도 클릭 한 번으로 선택할 수 있습니다.
속성과 중첩 요소는 어떻게 되나요?
각각 경로를 이름으로 하는 열이 됩니다. id 속성은 id가 되고, <author><name>은 author/name이 되며, <price currency="EUR">는 price와 price/@currency 두 열이 됩니다. 한 레코드 안에서 반복되는 필드는 한 셀에 합치거나 번호를 붙인 여러 열로 나눕니다.
Excel XML 스프레드시트 2003 파일도 열 수 있나요?
네. 이런 파일을 인식해 숫자, 날짜, 텍스트를 그대로 유지한 채 시트별로 변환합니다.
주문과 주문 항목처럼 파일에 표가 여러 개 있으면요?
반복 그룹마다 따로 선택할 수 있습니다. 각 주문 안의 항목처럼 중첩된 표에는 부모 레코드를 식별하는 열이 붙어 있어 두 시트를 서로 맞춰 볼 수 있습니다.
제 파일이 어딘가에 저장되나요?
아니요. XML 분석과 통합 문서 작성이 모두 이 페이지에서 이루어지며, 아무것도 저장하지 않습니다.
출처를 모르는 XML을 열어도 안전한가요?
네. 파일은 브라우저의 XML 파서가 읽는데, 이 파서는 외부 엔티티나 DTD를 절대 불러오지 않으며 파일 안의 어떤 것도 실행할 수 없습니다.
참고: XHTML 페이지나 DocBook 문서처럼 데이터가 아닌 글로 이루어진 문서는 찾을 표가 없어 제대로 변환되지 않습니다. 약 100 MB를 넘는 파일은 브라우저 메모리를 초과할 수 있습니다.
내 웹사이트에 이 도구 넣기
블로그, 수업 페이지, 도움말 글 어디에나 무료로 넣을 수 있습니다. 코드 한 줄만 붙여 넣으면 방문자가 페이지에서 바로 사용할 수 있습니다.