CSV 파일을 XML로 변환하려면 어떻게해야합니까?


8

CSV 파일을 XML로 변환하려면 어떻게해야합니까?

우분투 용 소프트웨어가 있습니까?


이해가 안 돼요 언급 한 세 가지 형식은 일반 텍스트 파일입니다. --- 내용이 다릅니다. 그리고 범위. 예를 추가 하시겠습니까?
Rmano

1
재개 투표. 나는 이것이 매우 간단하고 대답하기 쉽다고 생각한다 ;-)
Rinzwind

1
Rinzwind를 지원합니다. 방금 변환 할 수있는 소프트웨어를 요청했기 때문입니다.
Vitor Mazuco

답변:


7

변환에 대한 커뮤니티 웹 사이트 에는 csv2xml 이라는 명령 행 도구에 대한 링크가 있습니다. 유지 관리되지 않기 때문에 다른 옵션을 선택할 수 있습니다.

csv2xml 이라는 Java 도구 (warning : website is German)와 ff-extractor 라는 명령 행 도구에 대한 언급도 있습니다 .

이 링크에는 Python, Perl, PHP, XSLT에 대한 참조가 있지만 변환기를 직접 코딩해야합니다.


1
첫 번째 링크의 참조로 약간 업데이트했습니다. Altova ( altova.com ) 라는 상용 제품도 있습니다 .
Rinzwind

10

csv파일 의 형식과 파일에서 필요한 구조 를 알면 xml변환을 처리 할 수있는 스크립트를 만드는 것이 매우 간단합니다.

파일을 가져 오십시오 simple.csv.

Jack,35,United States
Jill,22,United Kingdom

다음 xml파일을 작성할 수 있습니다 .

<?xml version="1.0"?>
<Customers>
  <Customer>
    <Name>Jack</Name>
    <Age>35</Age>
    <Country>United States</Country>
 </Customer>
 <Customer>
    <Name>Jill</Name>
    <Age>22</Age>
    <Country>United Kingdom</Country>
 </Customer>
</Customers>

다음 스크립트로

#!/bin/bash
file_in="simple.csv"
file_out="simple.xml"
echo '<?xml version="1.0"?>' > $file_out
echo '<Customers>' >> $file_out
while IFS=$',' read -r -a arry
do
  echo '  <Customer>' >> $file_out
  echo '    <Name>'${arry[0]}'</Name>' >> $file_out
  echo '    <Age>'${arry[1]}'</Age>' >> $file_out
  echo '    <Country>'${arry[2]}'</Country>' >> $file_out
  echo '  </Customer>' >> $file_out
done < $file_in
echo '</Customers>' >> $file_out

이전에 코딩 한 적이 없어도 사용 및 수정이 쉬워야한다고 생각합니다. while루프 에서 파일을 한 줄씩 읽습니다 .

IFS내부 필드 지정자입니다. 는 IFS=$','필드 분리 값 쉼표임을 선언한다. 이것은 CSV 파일의 표준이지만 입력 파일 형식과 일치하도록 필요에 따라 변경할 수 있습니다.

이 명령에 대한 -r인수 read는 파일의 백 슬래시를 다음 특수 문자의 이스케이프가 아닌 데이터의 일부로 처리하도록 지시합니다.

-a arry인수는 파일의 각 열을 배열 ( arry)에 배치합니다. 이 예의 열은 이름, 연령, 국가입니다. 다시 말해 쉼표 사이의 값입니다. 따라서 행의 각 열은 배열에 저장됩니다.

그런 다음 필요한 텍스트 xml가 값을 감싸고 xml행이 출력 파일에 추가됩니다 echo.


@chaskes, line에 사용 된 옵션을 설명하면 while IFS=$',' read -r -a arry 다른 사람에게 유용합니다. 감사.
alhelal

@BandaMuhammadAlHelal 완료했습니다.
chaskes

큰 따옴표로 묶은 필드 안에 쉼표를 어떻게 처리 하시겠습니까? 마찬가지로 "Somename, Jack"대신에 Jack입력 파일?
muk.li

1
@ muk.li 입력 필드 구분 기호 (보통 쉼표)는 시작하는 줄에 표시됩니다 : while IFS = $ ','. 구분 기호가 별표라고 가정하면 $ '*'로 변경하면됩니다. 따라서 귀하의 경우 $ ' "'(단일 따옴표, 큰 따옴표, 작은 따옴표)이어야합니다.이 방법은 잘 작동하지만 셸에서 인용하는 것은 까다로울 수 있으며 테스트 할 기회가 없었습니다.
chaskes

1

CSV에서 XML로 변환하기 어려운 문제에 대한 상당히 사용자 친화적 인 (즉, 나에게도 쉬운) 솔루션 은이 기능이 내장 된 멋진 크로스 플랫폼 XML 편집기 를 사용하는 것 입니다. (우분투와 Mac OSX 10.10.5에서 모두 사용했으며 Windows 실행 파일도 있습니다.)

XMLSpear

언급 한 바와 같이 XML 편집기이지만 기본 메뉴에 CSV-to-XML (및 Excel-to-XML) "가져 오기"가 포함됩니다.

여기에 이미지 설명을 입력하십시오

약 15 초 만에 31Mb CSV 파일 (20,000 개의 항목이있는 라이브러리 데이터베이스에서 덤프)을 변환하여 저장하고 조작 할 수있는 올바른 형식의 XML 파일을 제공했습니다.

편집자로서 다른 많은 환영 기능이 있습니다 (위 링크에서 자세히 설명). 라이센스에 대한 언급을 찾을 수 없지만 "README"에 포함되어 있습니다.

XMLSpear는 개인용 무료 소프트웨어입니다.
xmlspear@donkeydevelopment.com 또는 포럼에 yor 의견을 보내주십시오 http://donkeydevelopment.com/forums.

상업적 사용은 당나귀 개발에 의해 승인되어야합니다.
제목 "라이센스 요청"과 함께 xmlspear@donkeydevelopment.com으로 이메일을 보내십시오.

추가 정보에는 .desktop 파일의 내용도 도움이됩니다.

Ubuntu 18.04 LTS (Gnome)에 따라 저에게 도움이됩니다.


0

나는 BaseX수입 능력이있는 것 같아 큰 팬입니다 .

http://docs.basex.org/wiki/CSV_Module


웹 응용 프로그램을 사용하는 것이 더 쉽다는 것을 지적 할 수 있습니다.

https://webapps.stackexchange.com/q/123959/24327

Google 스프레드 시트에서 작동하는 브라우저의 플러그인 또는 확장에 해당합니다.

나는 당신의 고통을 느낍니다. 그것은 겉보기에는 간단한 유틸리티이며, apt를 통해 이용할 수 있어야합니다.


0

나는 당신이나 누군가 파이썬으로 코드를 작성하는 것이 좋습니다. 파이썬은 배우기 쉽고 문제를 쉽게 해결합니다. CSV 모듈XML 모듈 이 모두 있습니다. 필자는 XML 요소에 대한 고유 한 이름이 필요하거나 다른 복잡한 요구 사항 (예 : 마지막 CSV 열을 마지막이지만 한 열의 특성으로 변환)과 같은 다른 요구 사항이있을 수 있음을 고려합니다.

파이썬에 대한 많은 온라인 자습서가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.