XML ( eXtensible Markup Language ) เปรียบเสมือน “ภาษากลาง” ที่ถูกออกแบบมาเพื่อใช้ในการจัดเก็บและขนส่งข้อมูล โดยเน้นความง่ายในการอ่านทั้งสำหรับมนุษย์และคอมพิวเตอร์ แม้ในปัจจุบันจะมี JSON เข้ามาแชร์ความนิยม ( เล็กกว่า, เบากว่า ) แต่ XML ยังคงเป็นรากฐานสำคัญในระบบสถาปัตยกรรมซอฟต์แวร์ระดับองค์กร
XML คืออะไร ?
XML ย่อมาจาก eXtensible Markup Language เป็นภาษาประเภทรหัสกำกับ ( Markup ) คล้ายกับ HTML แต่มีความแตกต่างที่สำคัญคือ
- HTML: ใช้เพื่อ “แสดงผล” ข้อมูล ( เช่น ตัวหนา, หัวข้อ )
- XML: ใช้เพื่อ “อธิบาย” ข้อมูล ( ว่าข้อมูลนี้คืออะไร )
จุดเด่นที่สุดคือ “Extensible” ( ขยายได้ ) หมายความว่าคุณสามารถกำหนด “แท็ก” ( Tag ) ขึ้นมาเองได้ตามใจชอบ ไม่ได้ถูกจำกัดเหมือน HTML
โครงสร้างของ XM
โครงสร้างของ XML จะมีลักษณะเป็นลำดับชั้น ( Hierarchy ) หรือแบบต้นไม้ ( Tree Structure ) ซึ่งต้องประกอบด้วยส่วนหลัก ๆ ดังนี้
- Prolog: บรรทัดแรกที่ระบุเวอร์ชันและรหัสตัวอักษร เช่น
<?xml version="1.0" encoding="UTF-8"?> - Root Element: เป็นแท็กหลักที่ครอบคลุมข้อมูลทั้งหมด (ต้องมีเพียงหนึ่งเดียวต่อหนึ่งไฟล์)
- Child Elements: แท็กย่อยที่อยู่ภายใต้ Root
- Attributes: คุณลักษณะเพิ่มเติมที่ใส่ไว้ในแท็กเปิด
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="cooking">
<title>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
</bookstore>
ทำไมต้องใช้ XML ?
- ความเป็นระเบียบ: ข้อมูลถูกจัดเป็นสัดส่วน ค้นหาและเข้าถึงได้ง่ายด้วยโปรแกรม ( Parsing )
- ความเป็นอิสระ: ข้อมูลถูกแยกออกจากส่วนแสดงผล ทำให้สามารถนำข้อมูลชุดเดิมไปใช้ได้ทั้งบนเว็บ แอปมือถือ หรือส่งระหว่างเซิร์ฟเวอร์
- มาตรฐานสากล: สนับสนุนโดย W3C และใช้งานได้กับทุกแพลตฟอร์ม
การใช้งานในปัจจุบัน
แม้ JSON จะได้รับความนิยมใน Web API ยุคใหม่ แต่ XML ยังมีบทบาทสำคัญใน
- Configuration Files: โปรแกรมหลายตัวยังใช้ XML ในการตั้งค่า ( เช่น Android App Manifest )
- Web Services ( SOAP ): ระบบธนาคารหรือองค์กรใหญ่ที่เน้นความปลอดภัยสูง
- SVG: รูปภาพแบบ Vector ที่เราเห็นบนเว็บ แท้จริงแล้วก็คือไฟล์ XML รูปแบบหนึ่ง
- Office Documents: ไฟล์
.docxหรือ.xlsxจริง ๆ คือการนำไฟล์ XML หลาย ๆ ไฟล์มาบีบอัดรวมกัน
ข้อควรระวัง: การพิมพ์ Tag ผิดเพียงตัวเดียว ( เช่น ลืมปิดแท็ก </tag> ) อาจทำให้ Service ทั้งหมดไม่ทำงานได้
อ่านเพิ่มเติม