Python ไฟล์ XML – วิธีอ่าน เขียน และแยกวิเคราะห์
XML คืออะไร?
XML ย่อมาจาก eXtensible Markup Language ได้รับการออกแบบมาเพื่อจัดเก็บและขนส่งข้อมูลจำนวนน้อยถึงปานกลาง และมีการใช้กันอย่างแพร่หลายในการแบ่งปันข้อมูลที่มีโครงสร้าง
Python ช่วยให้คุณสามารถแยกวิเคราะห์และแก้ไขเอกสาร XML เพื่อแยกวิเคราะห์เอกสาร XML คุณต้องมีเอกสาร XML ทั้งหมดอยู่ในหน่วยความจำ ในบทช่วยสอนนี้ เราจะมาดูว่าเราสามารถใช้คลาส XML minidom ได้อย่างไร Python เพื่อโหลดและแยกวิเคราะห์ไฟล์ XML
วิธีแยกวิเคราะห์ XML โดยใช้ minidom
เราได้สร้างไฟล์ XML ตัวอย่างที่เราจะแยกวิเคราะห์
ขั้นตอนที่ 1) สร้างไฟล์ XML ตัวอย่าง
ภายในไฟล์เราจะเห็นชื่อ นามสกุล บ้าน และพื้นที่ความเชี่ยวชาญ (SQL, Python, การทดสอบและธุรกิจ)
ขั้นตอนที่ 2) ใช้ฟังก์ชันแยกวิเคราะห์เพื่อโหลดและแยกวิเคราะห์ไฟล์ XML
เมื่อเราแยกวิเคราะห์เอกสารแล้ว เราจะพิมพ์ออกมา “ชื่อโหนด” ของรากของเอกสารและ “ชื่อแท็กลูกคนแรก”- Tagname และ nodename เป็นคุณสมบัติมาตรฐานของไฟล์ XML
- นำเข้าโมดูล xml.dom.minidom และประกาศไฟล์ที่ต้องแยกวิเคราะห์ (myxml.xml)
- ไฟล์นี้ประกอบด้วยข้อมูลพื้นฐานเกี่ยวกับพนักงาน เช่น ชื่อ นามสกุล บ้าน ความเชี่ยวชาญ ฯลฯ
- เราใช้ฟังก์ชันแยกวิเคราะห์บน XML minidom เพื่อโหลดและแยกวิเคราะห์ไฟล์ XML
- เรามีตัวแปร doc และ doc รับผลลัพธ์ของฟังก์ชันแยกวิเคราะห์
- เราต้องการพิมพ์ชื่อโหนดและชื่อแท็กย่อยจากไฟล์ ดังนั้นเราจึงประกาศมันในฟังก์ชันการพิมพ์
- เรียกใช้รหัส - พิมพ์ชื่อโหนด (#document) จากไฟล์ XML และชื่อแท็กย่อยคนแรก (พนักงาน) จากไฟล์ XML
หมายเหตุ:
Nodename และชื่อแท็กย่อยเป็นชื่อมาตรฐานหรือคุณสมบัติของ XML dom
ขั้นตอนที่ 3) เรียกรายการแท็ก XML จากเอกสาร XML และพิมพ์ออกมา
ต่อไป เรายังสามารถเรียกรายการแท็ก XML จากเอกสาร XML และพิมพ์ออกมาได้ ที่นี่เราพิมพ์ชุดทักษะเช่น SQL Python, การทดสอบ และธุรกิจ
- ประกาศความเชี่ยวชาญที่แปรผัน ซึ่งเราจะดึงความเชี่ยวชาญทั้งหมดที่พนักงานมี
- ใช้ฟังก์ชันมาตรฐาน dom ที่เรียกว่า "getElementsByTagName"
- นี่จะได้รับองค์ประกอบทั้งหมดที่มีชื่อว่าทักษะ
- ประกาศการวนซ้ำบนแท็กทักษะแต่ละรายการ
- เรียกใช้โค้ด- มันจะแสดงรายการทักษะสี่ทักษะ
วิธีการเขียนโหนด XML
เราสามารถสร้างแอตทริบิวต์ใหม่ได้โดยใช้ฟังก์ชัน "createElement" จากนั้นจึงเพิ่มแอตทริบิวต์หรือแท็กใหม่นี้ต่อท้ายแท็ก XML ที่มีอยู่ เราได้เพิ่มแท็กใหม่ “BigData” ในไฟล์ XML ของเรา
- คุณต้องเขียนโค้ดเพื่อเพิ่มแอตทริบิวต์ใหม่ (BigData) ให้กับแท็ก XML ที่มีอยู่
- จากนั้น คุณต้องพิมพ์แท็ก XML โดยมีแอตทริบิวต์ใหม่ต่อท้ายด้วยแท็ก XML ที่มีอยู่
- ในการเพิ่ม XML ใหม่และเพิ่มลงในเอกสาร เราใช้โค้ด “doc.create element”
- รหัสนี้จะสร้างแท็กทักษะใหม่สำหรับคุณลักษณะใหม่ของเรา "ข้อมูลขนาดใหญ่"
- เพิ่มแท็กทักษะนี้ลงในเอกสาร ลูกคนแรก (พนักงาน)
- เรียกใช้โค้ด แท็กใหม่ "ข้อมูลขนาดใหญ่" จะปรากฏขึ้นพร้อมกับรายการความเชี่ยวชาญอื่นๆ
ตัวอย่างตัวแยกวิเคราะห์ XML
Python 2 ตัวอย่าง
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print doc.nodeName print doc.firstChild.tagName # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") #Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print " " expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") if name == "__main__": main();
Python 3 ตัวอย่าง
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print (doc.nodeName) print (doc.firstChild.tagName) # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) # Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print (" ") expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) if __name__ == "__main__": main();
วิธีแยกวิเคราะห์ XML โดยใช้ ElementTree
ElementTree เป็น API สำหรับจัดการ XML ElementTree เป็นวิธีง่ายๆ ในการประมวลผลไฟล์ XML
เรากำลังใช้เอกสาร XML ต่อไปนี้เป็นตัวอย่างข้อมูล:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
การอ่าน XML โดยใช้ ElementTree:
เราต้องนำเข้าโมดูล xml.etree.ElementTree ก่อน
import xml.etree.ElementTree as ET
ตอนนี้เรามาดึงองค์ประกอบรูทกันดีกว่า:
root = tree.getroot()
ต่อไปนี้เป็นโค้ดที่สมบูรณ์สำหรับการอ่านข้อมูล xml ด้านบน
import xml.etree.ElementTree as ET tree = ET.parse('items.xml') root = tree.getroot() # all items data print('Expertise Data:') for elem in root: for subelem in elem: print(subelem.text)
เอาท์พุท:
Expertise Data: SQL Python
สรุป
Python ช่วยให้คุณสามารถแยกวิเคราะห์เอกสาร XML ทั้งหมดในคราวเดียว ไม่ใช่แค่ทีละบรรทัด เพื่อแยกวิเคราะห์เอกสาร XML คุณต้องมีเอกสารทั้งหมดอยู่ในหน่วยความจำ
- เพื่อแยกวิเคราะห์เอกสาร XML
- นำเข้า xml.dom.minidom
- ใช้ฟังก์ชัน “parse” เพื่อแยกวิเคราะห์เอกสาร ( doc=xml.dom.minidom.parse (ชื่อไฟล์);
- เรียกรายการแท็ก XML จากเอกสาร XML โดยใช้โค้ด (=doc.getElementsByTagName( “name of xml tags”)
- เพื่อสร้างและเพิ่มคุณลักษณะใหม่ในเอกสาร XML
- ใช้ฟังก์ชัน “createElement”