ฉันจะแปลงไฟล์ CSV เป็น XML ได้อย่างไร
มีซอฟต์แวร์สำหรับ Ubuntu หรือไม่?
ฉันจะแปลงไฟล์ CSV เป็น XML ได้อย่างไร
มีซอฟต์แวร์สำหรับ Ubuntu หรือไม่?
คำตอบ:
บนเว็บไซต์ชุมชนในการแปลงมีการเชื่อมโยงไปยังเครื่องมือบรรทัดคำสั่งที่เรียกว่าcsv2xml เนื่องจากไม่มีการระบายคุณอาจต้องการเลือกตัวเลือกอื่น
นอกจากนี้ยังกล่าวถึงเครื่องมือที่เรียกว่า Java csv2xml (คำเตือน: เว็บไซต์ในภาษาเยอรมัน) และเครื่องมือบรรทัดคำสั่งที่เรียกว่าFF-ระบาย
ลิงค์นี้ยังมีการอ้างอิงถึง 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
while IFS=$',' read -r -a arry
มันจะมีประโยชน์สำหรับคนอื่น ขอบคุณ
"Somename, Jack"
ในสถานที่ของJack
ในแฟ้มใส่?
วิธีแก้ปัญหาที่ใช้งานง่าย (เช่นง่ายสำหรับ numpties อย่างฉัน) กับความท้าทายในการแปลง CSV เป็น XML คือการใช้เครื่องมือแก้ไข XML ข้ามแพลตฟอร์มที่มีคุณลักษณะนี้ในตัว (ฉันใช้ทั้งใน Ubuntu และ Mac OSX 10.10.5 และยังใช้งานได้กับ Windows)
ดังที่กล่าวไว้เป็นเครื่องมือแก้ไข XML แต่มี "การนำเข้า" CSV-to-XML (และ Excel-to-XML) ในเมนูหลัก:
มันแปลงไฟล์ CSV 31Mb สำหรับฉัน (ดัมพ์จากฐานข้อมูลไลบรารี 20,000 รายการ) ในเวลาประมาณ 15 วินาทีให้ไฟล์ XML ที่มีรูปแบบที่ดีแก่ฉันเพื่อบันทึกและจัดการ
ในฐานะที่เป็นบรรณาธิการมันมีคุณสมบัติต้อนรับอื่น ๆ อีกมากมาย (รายละเอียดที่ลิงค์ด้านบน) ฉันไม่พบการอ้างถึงใบอนุญาตใด ๆ แต่จะรวมอยู่ใน "README":
XMLSpear เป็นซอฟต์แวร์ฟรีสำหรับใช้ส่วนตัว
กรุณาส่งความคิดเห็นเล็กน้อยเพื่อ xmlspear@donkeydevelopment.comhttp://donkeydevelopment.com/forums
หรือในฟอรั่มการใช้งานเชิงพาณิชย์จะต้องได้รับการอนุมัติโดย donkeydevelopment
เพียงส่งอีเมลไปที่ xmlspear@donkeydevelopment.com พร้อมหัวข้อ "คำขอใบอนุญาต"
readme ยังมีเนื้อหาสำหรับไฟล์. desktop
ทำงานได้ดีสำหรับฉันภายใต้ Ubuntu 18.04 LTS (Gnome)
ฉันเป็นแฟนตัวยงของBaseX
ความสามารถในการนำเข้า:
http://docs.basex.org/wiki/CSV_Module
อาจชี้ให้เห็นว่าการใช้แอปพลิเคชันเว็บดูเหมือนว่าง่ายกว่า:
https://webapps.stackexchange.com/q/123959/24327
จำนวนเงินใดที่ปลั๊กอินหรือส่วนขยายของเบราว์เซอร์ที่ทำงานกับ google ชีต
ฉันรู้สึกถึงความเจ็บปวดของคุณเพราะมันเป็นยูทิลิตี้ที่ดูเหมือนง่ายซึ่งควรจะใช้ได้ดีผ่านการใช้งาน
ฉันจะแนะนำให้คุณหรือคนเขียนรหัสใน Python Python ง่ายต่อการเรียนรู้และแก้ไขปัญหาของคุณได้อย่างง่ายดาย มันมีทั้งCSV โมดูลและXML โมดูล ข้อเสนอแนะของฉันคำนึงถึงว่าคุณอาจต้องมีชื่อของคุณเองสำหรับองค์ประกอบ XML หรือมีข้อกำหนดที่ซับซ้อนอื่น ๆ (เช่นการแปลงคอลัมน์ CSV ล่าสุดเป็นแอตทริบิวต์ของคอลัมน์สุดท้าย แต่คอลัมน์เดียว)
มีบทเรียนออนไลน์มากมายเกี่ยวกับ Python