ฉันจะแปลงไฟล์ 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เป็นห่อเพียงรอบค่าและบรรทัดถูกผนวกเข้ากับไฟล์ที่ส่งออกด้วยxmlecho
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