ประมวลผล XML ด้วย PyXML
Python เป็นภาษาหนึ่ง ที่เป็น interactive script ซึ่งสามารถใช้งานได้หลากหลาย รวมทั้งการประมวลผลไฟล์ XML ด้วย
ซึ่งสามากทำได้ง่ายดาย โดยใช้ module PyXML
1. ติดตั้ง PyXML
อันดับแรกเราต้องติดตั้ง Python InterPretter ก่อนครับ สามารดาวน์โหลดได้จาก http://www.python.org/ ซึ่งผมขอข้ามละกัน
เ มื่อติดตั้งแล้ว สำหรับ Windows อาจต้อง set path ให้เรียก python interpreter ใช้งานได้ ส่วน linux ใช้ apt-get install ก็รอใช้งานได้แล้วครับ
อันดับต่อมาก็โหลด PyXML ซึ่งเป็น module ที่ใช้ประมวลผล XML ครับ โหลด source ได้ที่
http://sourceforge.net/projects/pyxml/
จากนั้น unzip แล้วติดตั้ง โดยเรียกคำสั่ง
# python setup.py install
จากนั้นระบบจะทำการ install ให้
ซึ่งสำหรับ window บางครั้งอาจต้องติดตั้ง .NET SDK เพื่อ compile module ด้วย
ใช้แบบ binary จะสะดวกกว่า
สามารถทดสอบได้ โดยเข้าไปที่ interpreter ดังนี้
>>> import xml
>>> xml.__version__
'0.8.4'
ถือว่าใช้ได้ครับ
2. ลงมือเขียน parser
เมื่อลง python จะมี IDLE ซึ่งเป็น IDE ที่ติดตั้งมาให้เหมาะสำหรับการใช้งานพอสมควร เราจะใช้ IDE ตัวนี้เป้นหลักครับ

อันดับแรกสร้าง xml ไฟล์ที่จะตัดก่อน สมติชื่อ contents.xml
<?xml version="1.0" encoding="tis-620"?> <contents> <title>นี่คือหัวเรื่อง</title> <details>นี่คือรายละเอียดของ ไฟล์ xml</details> </contents>
สำหรับที่จะทดสอบเขียน เราจะทดสอบโดยการใช้ DOM และ SAX ครับ
เลือก File >> New Window
จากนั้น save file เป็น .py
#!/usr/bin/env python import os, sys from xml.dom.ext.reader import Sax2 #เปิดไฟล์ f = open("contents.xml") # สร้าง SAX Reader สำหรับอ่าน xml แล้วสร้างเป็น DOM tree reader = Sax2.Reader() # parse XML document doc = reader.fromStream(f) # ปิดไฟล์ f.close() # พิมพ์ document ออกแบบจัดหน้าให้สวยงาม PrettyPrint(doc)
จากนั้นเลือก F5 สำหรับ รัน module
จริง ๆ แล้ว เราสามารถพิมพ์คำสั่งที่ละบรรทัดที่ interpreter เลยก็ได้ครับ แต่ผมชอบเขียนเป็นไฟล์มากกว่า เพราะแก้ไขสะดวก
ผลลัพธ์จะได้เอกสาร XML ข้างต้นออกมา
หากต้องการหา element ก็สามารถหาได้โดยคำสั่ง
#หา element ชื่อว่า title title_elem = doc.documentElement.getElementsByTagName("title")[0] #เรียกดู data ใน element title_string = title_elem.firstChild.data #พิมพ์ออก print(title_string)
ยังมีที่น่าสนใจอีกมากมาย สำหรับวันนี้ขอพอแค่นี้ก่อนครับ
::ข้อมูลเพิ่มเติม ::
http://pyxml.sourceforge.net/topics/howto/xml-howto.html
http://www.xml.com/pub/a/2002/09/25/py.html









ความคิดเห็น
แสดงความคิดเห็น