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




