ฉันกำลังทำงานกับเครื่องมือแก้ไขระดับที่บันทึกข้อมูลเป็น XML
สิ่งนี้เหมาะอย่างยิ่งในระหว่างการพัฒนาเนื่องจากไม่เจ็บปวดที่จะทำการเปลี่ยนแปลงรูปแบบข้อมูลเล็กน้อยและทำงานได้ดีกับข้อมูลที่มีลักษณะคล้ายต้นไม้
ข้อเสียคือไฟล์ XML นั้นค่อนข้างป่องส่วนใหญ่เกิดจากการทำซ้ำชื่อแท็กและแอตทริบิวต์ นอกจากนี้เนื่องจากข้อมูลตัวเลขที่ใช้พื้นที่มากกว่าการใช้ประเภทข้อมูลดั้งเดิม ระดับเล็กสามารถจบได้อย่างง่ายดายด้วย 1Mb + ฉันต้องการลดขนาดเหล่านี้ลงอย่างมากโดยเฉพาะอย่างยิ่งหากจะใช้ระบบสำหรับเกมบน iPhone หรืออุปกรณ์อื่นที่มีหน่วยความจำค่อนข้าง จำกัด
ทางออกที่ดีที่สุดสำหรับหน่วยความจำและประสิทธิภาพคือการแปลง XML เป็นรูปแบบระดับไบนารี แต่ฉันไม่ต้องการทำสิ่งนี้ ฉันต้องการให้รูปแบบมีความยืดหยุ่นพอสมควร XML ทำให้ง่ายต่อการเพิ่มคุณสมบัติใหม่ให้กับวัตถุและให้เป็นค่าเริ่มต้นหากมีการโหลดข้อมูลรุ่นเก่า ดังนั้นฉันต้องการที่จะรักษาลำดับชั้นของโหนดที่มีคุณลักษณะเป็นคู่ค่าชื่อ
แต่ฉันต้องเก็บสิ่งนี้ในรูปแบบที่กะทัดรัดยิ่งขึ้น - เพื่อลบการซ้ำซ้อนของชื่อแท็ก / แอตทริบิวต์ อาจจะให้แอตทริบิวต์ประเภทดั้งเดิมดังนั้นเช่นข้อมูลจุดลอยตัวจะถูกเก็บไว้ที่ 4 ไบต์ต่อลอยไม่เป็นสตริงข้อความ
Google / Wikipedia เปิดเผยว่า 'binary XML' เป็นปัญหาใหม่แทบจะไม่ได้รับการแก้ไขมาหลายครั้งแล้ว มีใครบ้างที่เคยมีประสบการณ์กับระบบ / มาตรฐานที่มีอยู่บ้างไหม? - เหมาะสำหรับการเล่นเกมหรือไม่ - ด้วยตัวแยกวิเคราะห์ / ตัวโหลดข้ามแพลตฟอร์ม (C / C ++) ที่ให้บริการฟรีน้ำหนักเบาและข้ามแพลตฟอร์ม
หรือฉันควรบูรณาการล้อนี้ด้วยตัวเอง?
หรือฉันดีกว่าลืมอุดมคติและเพียงแค่บีบอัดข้อมูล. xml ดิบของฉัน (มันควรอัดแน่นด้วยการบีบอัดแบบ zip) และเพียงแค่ใช้หน่วยความจำ / ประสิทธิภาพการทำงานที่โหลด