CSV 파일을 XML로 변환하려면 어떻게해야합니까?
우분투 용 소프트웨어가 있습니까?
답변
변환에 대한 커뮤니티 웹 사이트 에는 csv2xml 이라는 명령 행 도구에 대한 링크가 있습니다. 유지 관리되지 않기 때문에 다른 옵션을 선택할 수 있습니다.
csv2xml 이라는 Java 도구 (warning : website is German)와 ff-extractor 라는 명령 행 도구에 대한 언급도 있습니다 .
이 링크에는 Python, Perl, PHP, XSLT에 대한 참조가 있지만 변환기를 직접 코딩해야합니다.
답변
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
.
답변
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)에 따라 저에게 도움이됩니다.
답변
나는 BaseX
수입 능력이있는 것 같아 큰 팬입니다 .
http://docs.basex.org/wiki/CSV_Module
웹 응용 프로그램을 사용하는 것이 더 쉽다는 것을 지적 할 수 있습니다.
https://webapps.stackexchange.com/q/123959/24327
Google 스프레드 시트에서 작동하는 브라우저의 플러그인 또는 확장에 해당합니다.
나는 당신의 고통을 느낍니다. 그것은 겉보기에는 간단한 유틸리티이며, apt를 통해 이용할 수 있어야합니다.