Difference between SAX and DOM XML Parsing



XML Parsing

ในกระบวนการนำข้อมูล XML มาใช้งานใน Application นั้นจะมี XML Parser เป็นตัวกลางในการดึงข้อมูลจาก เอกสาร XML และ Application ซึ่งเป็น API ชนิดหนึ่ง โดย API ที่นิยมกันมากคือ DOM และ SAX ซึ่งต่างก็มีวิธีในการดึงข้อมูลที่แตกต่างกันคือ

SAX vs DOM

DOM จะมองเอกสาร XML ในลักษณะของโครงสร้างต้นไม้ (Tree)

DOM ย่อมาจาก Document Object Model โดยมีหลักการในการอ่านเอกสาร XML มาวางเป็น Tree ในหน่วยความจำของเครื่องที่กำลังทำงาน ประกอบด้วย Element หรือ Attribute ต่างๆ การเข้าถึงข้อมูลจึงเป็นการเดินไปตามกิ่งก้านต่างๆ ทั้งเป็นแบบต่อเนื่องไปเรื่อยๆ หรือจะอ้างอิงกิ่งก้านเฉพาะเจาะจงลงไป หรือ Random access ก็ได้

ข้อจำกัดของ DOM ก็อยู่ตรงปริมาณหน่วยความจำของเครื่องว่าจะสามารถรองรับข้อมูลได้ ใหญ่แต่ไหน เพราะวิธี DOM จะทำการอ่านข้อมูลทั้งหมดมาเก็บไว้ในหน่วยความจำเพียงครั้งเดียว แต่ข้อดีคือ เขียน Code ง่ายกว่ามาก

SAX จัดการเอกสาร XML ด้วยแนวทาง Event-Driven

Simple API for XML คือชื่อย่อของ SAX โดย SAX จะไม่ load ข้อมูลทั้งหมดเข้ามาในหน่วยความจำ แต่จะอ่านเอกสารจาก Disk ตั้งแต่เริ่มต้นไล่ไปเรื่อยๆ แล้วจะมีการสร้าง Event ออกมา เช่น เปิด Element ปิด Element หรือ เจอ Attribute เป็นต้น คนเขียนโปรแกรมก็ต้องทำหน้าที่ ดักจับ Event เหล่านี้มาจัดการกับข้อมูลต่อ เช่นเจอ Event เมื่อถึง Element ชื่อ X ก็ต้องทำหน้าที่ในการดึง X มาใช้งานเป็นต้น

สรุปว่าจะใช้งาน SAX เหมาะสำหรับการค้นหาข้อมูลเล็กน้อยบางอย่าง ซึ่งหากใช้ DOM ก็ต้อง Load ข้อมูลสัก 100 MB คงไม่คุ้ม แต่ถ้าต้องการ Random access และต้องเปลี่ยนแปลงแก้ไขข้อมูลก็คงต้องหันกลับไปใช้ DOM แนะนำว่า หากข้อมูลคุณอยู่แถวๆ 20 MB ก็คงยังจะพอถูไถไปกับ DOM ได้ ถ้ามากกว่านี้ ตอน Load เอกสารก็อาจจะอืดหน่อย และขึ้นอยู่กับปริมาณหน่วยความจำของเครื่องด้วยนะครับ


Popular posts from this blog

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

5 TED Talk ที่จะช่วยให้คุณทำงานดีขึ้น