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