ความแตกต่างระหว่าง SAX และ DOM (พร้อมตาราง)

สารบัญ:

Anonim

ผู้ที่เกี่ยวข้องในโลกของซอฟต์แวร์จะคุ้นเคยกับ 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 จะมีประโยชน์มากกว่ามาก เนื่องจากสามารถโหลดเอกสารทั้งหมดลงในหน่วยความจำได้

อ้างอิง

  1. https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.126.269&rep=rep1&type=pdf
  2. https://ieeexplore.ieee.org/abstract/document/5458970

ความแตกต่างระหว่าง SAX และ DOM (พร้อมตาราง)