ผู้ที่เกี่ยวข้องในโลกของซอฟต์แวร์จะคุ้นเคยกับ XML parser เป็นอย่างดี สำหรับผู้ที่มีความเข้าใจอย่างจำกัดในด้านนี้ เป็นชุดซอฟต์แวร์ที่ได้รับมอบหมายให้ทำหน้าที่จัดหาแอปพลิเคชันไคลเอ็นต์ด้วยอินเทอร์เฟซเมื่อเอกสารที่พวกเขาทำงานด้วยเป็นเอกสาร XML Parsers สองประเภทคือ SAX และ DOM
SAX กับ DOM
ความแตกต่างระหว่าง SAX และ DOM คือในขณะที่ทั้งคู่เป็นตัวแยกวิเคราะห์ XM แต่เดิมเป็นตัวย่อสำหรับ "Simple API สำหรับ XML" ในทางกลับกัน คำหลังเป็นตัวย่อสำหรับ “Document Object Model” ปัจจัยที่แตกต่างอีกประการหนึ่งระหว่างทั้งสองคือในขณะที่อดีตมีประสิทธิภาพที่น่าทึ่งของหน่วยความจำในขณะที่อย่างหลังล้มเหลวในด้านนี้ นอกจากนี้ ในขณะที่รุ่นก่อนยังมีความเร็วที่น่าสังเกตอีกด้วย แต่รุ่นหลังค่อนข้างช้ากว่า
SAX เป็นคำศัพท์ที่คนส่วนใหญ่คุ้นเคยในโลกของซอฟต์แวร์ นี่เป็นซอฟต์แวร์สำหรับการแยกวิเคราะห์ XML ปัจจัยบางอย่างที่ทำให้แตกต่างจากคู่แข่งคือความจริงที่ว่าการใช้งานมีความชัดเจนและเรียบง่าย นอกจากนี้ยังภาคภูมิใจในหน่วยความจำที่มีประสิทธิภาพ นอกจากนี้ยังเข้ากันได้ดีกับแอพพลิเคชั่นสตรีม
พูดอย่างน้อยที่สุด DOM ก่อให้เกิดการแข่งขันที่สำคัญกับตัวแยกวิเคราะห์ XML ที่กล่าวถึงข้างต้น สิ่งที่น่าสนใจคือโครงสร้างภายในที่สามารถสร้างได้คล้ายกับต้นไม้ นี่คือคุณลักษณะที่แยกความแตกต่างจากการก้าวกระโดดจาก SAX เนื่องจากโครงสร้างแบบต้นไม้ให้ข้อมูลที่เพียงพอแก่ลูกค้า ซึ่งเป็นสิ่งที่ parser อื่นล้มเหลว
ตารางเปรียบเทียบระหว่าง SAX และ DOM
พารามิเตอร์ของการเปรียบเทียบ | SAX | โดม |
ฟูลฟอร์ม | API อย่างง่ายสำหรับ XML | โมเดลวัตถุเอกสาร |
ธรรมชาติของ Parser | นี่คือเหตุการณ์ตามหนึ่ง | นี่คือต้นไม้ที่มีโครงสร้าง |
ความเร็ว | ความเร็วของมันค่อนข้างช้าเมื่อเปรียบเทียบ | ความเร็วเป็นหนึ่งในคุณสมบัติที่โดดเด่นของมัน |
การสร้างไฟล์ XML | สามารถใช้เพื่อเตรียมไฟล์ XML ที่โดดเด่นใน Java | ต้องใช้หน่วยความจำสูงเพื่อเตรียมไฟล์ XML |
โครงสร้างภายใน | สร้างโครงสร้างภายในไม่ได้ | สามารถสร้างโครงสร้างภายในที่คล้ายกับต้นไม้ได้ |
SAX คืออะไร?
ดังที่ได้กล่าวมาแล้ว SAX เป็นคำศัพท์ที่คนส่วนใหญ่คุ้นเคยในโลกของซอฟต์แวร์ นี่เป็นซอฟต์แวร์สำหรับการแยกวิเคราะห์ XML ปัจจัยบางอย่างที่ทำให้แตกต่างจากคู่แข่งคือความจริงที่ว่าการใช้งานมีความชัดเจนและเรียบง่าย นอกจากนี้ยังภาคภูมิใจในหน่วยความจำที่มีประสิทธิภาพ นอกจากนี้ยังเข้ากันได้ดีกับแอพพลิเคชั่นสตรีม
สิ่งนี้มีประโยชน์จริง ๆ สำหรับไฟล์ที่มีขนาดเล็กและเตรียมไว้ใน Java ซึ่งแตกต่างจากคู่แข่งรายนี้ "อ่านอย่างเดียว" มันอาจจะออกมาเป็นความผิดหวังที่ไม่อนุญาตให้นำทางย้อนกลับ นอกจากนี้ ไฟล์เพียงส่วนเล็ก ๆ เท่านั้นที่มีอยู่ในหน่วยความจำ ไม่ใช่ทั้งหมด
นอกจากนี้ นี่คือ API แบบอิงเหตุการณ์ มีหน้าที่จัดเตรียมอินเทอร์เฟซสำหรับตัวจัดการทั้งหมดสี่ตัว ไม่สามารถสร้างโครงสร้างภายในได้ แต่สิ่งที่ทำคือรวมส่วนประกอบที่เกิดขึ้นทั้งหมดของเอกสารที่ป้อนเข้าเป็นเหตุการณ์ จากนั้นจะแปลและแจ้งให้ลูกค้าทราบเกี่ยวกับข้อมูลที่มีอยู่ในเอกสารที่เกี่ยวข้อง
นอกจากนี้ โปรดทราบว่าเหมาะที่สุดสำหรับไฟล์ขนาดใหญ่เพราะจะไม่ต้องโหลดไฟล์ XML ลงไปทั้งหมด
DOM คืออะไร?
เรียกว่า Document Object Model พูดอย่างน้อยที่สุด DOM ก่อให้เกิดการแข่งขันที่สำคัญกับตัวแยกวิเคราะห์ XML ที่กล่าวถึงข้างต้น สิ่งที่น่าสนใจคือโครงสร้างภายในที่สามารถสร้างได้คล้ายกับต้นไม้ นี่คือคุณลักษณะที่แยกความแตกต่างจากการก้าวกระโดดจาก SAX เนื่องจากโครงสร้างแบบต้นไม้ให้ข้อมูลที่เพียงพอแก่ลูกค้า ซึ่งเป็นสิ่งที่ parser อื่นล้มเหลว กล่าวคือ สามารถสร้างโครงสร้างภายในที่คล้ายกับต้นไม้ได้
มีการใช้กันอย่างแพร่หลายเพราะใช้งานง่ายมาก และเนื่องจากโครงสร้างภายในซึ่งมีลักษณะเหมือนต้นไม้ องค์ประกอบทั้งหมดของเอกสารจึงแสดงอยู่ในนั้น นอกจากนี้ ยังสร้างการนำเสนอแบบ In-memory tree ที่แสดงรายละเอียดของไฟล์ที่ป้อนเข้าไป จากนั้นจึงแยกวิเคราะห์ไฟล์ นี่คือสาเหตุที่ต้องใช้หน่วยความจำสูงเพื่อเตรียมไฟล์ XML
ถึงตอนนี้ คุณต้องเดาคุณสมบัติหลักของมันแล้ว แน่นอนว่าความสามารถในการจัดโครงสร้างข้อมูลในรูปแบบต้นไม้ที่ให้ข้อมูลทั้งหมดที่มีอยู่ในไฟล์ XML ดั้งเดิมกับไคลเอนต์
นอกจากนี้ยังเป็นประโยชน์ต่อการใช้งานเนื่องจากการอ่านและการเขียนเป็นไปอย่างราบรื่นและใช้งานง่าย เอกสารที่จำเป็นสามารถเข้าถึงได้โดยการสุ่ม อย่างไรก็ตาม มันก็ยังมีช่องโหว่อยู่บ้าง สิ่งเหล่านี้คือการขาดประสิทธิภาพของหน่วยความจำและความจริงที่ว่ามันช้ามาก
ความแตกต่างหลักระหว่าง SAX และ DOM
บทสรุป
เราสามารถตกลงกับความจริงที่ว่าชีวิตของเราง่ายขึ้นมากด้วยความเร็วที่มองเห็นได้ของความก้าวหน้า เมื่อสิ่งต่าง ๆ เริ่มง่ายขึ้น ความจำเป็นในการเรียนรู้สิ่งเหล่านั้นจึงมีความสำคัญยิ่ง และด้วยการผลิตทางเทคโนโลยีที่มีอยู่อย่างมากมาย เราทุกคนไม่สามารถก้าวให้ทัน ดังนั้นจึงทำให้เกิดความสับสน แม้แต่แง่มุมที่น้อยที่สุดก็ยังจำเป็นต้องรู้ในบางครั้ง เช่น ความแตกต่างระหว่าง SAX และ DOM แม้ว่าทั้งคู่จะเป็นตัวแยกวิเคราะห์ XM แต่ตัวก่อนหน้านั้นเป็นตัวย่อสำหรับ “Simple API สำหรับ XML” ในทางกลับกัน คำหลังเป็นตัวย่อสำหรับ “Document Object Model”
ปัจจัยที่แตกต่างอีกประการระหว่างทั้งสองคือในขณะที่อดีตมีประสิทธิภาพในการจดจำที่โดดเด่นในขณะที่อย่างหลังล้มเหลวในด้านนี้ นอกจากนี้ ในขณะที่รุ่นก่อนยังมีความเร็วที่น่าสังเกตอีกด้วย แต่รุ่นหลังค่อนข้างช้ากว่า นอกจากนี้ SAX ยังโหลดไฟล์ในหน่วยความจำจำนวนจำกัดอีกด้วย ในทางตรงกันข้าม DOM จะมีประโยชน์มากกว่ามาก เนื่องจากสามารถโหลดเอกสารทั้งหมดลงในหน่วยความจำได้
อ้างอิง
- https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.126.269&rep=rep1&type=pdf
- https://ieeexplore.ieee.org/abstract/document/5458970