XML: มันคืออะไร โครงสร้างเอกสาร และหลักการทำงาน

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-03-08 เวลาอ่าน: 8 นาที

XML (eXtensible Markup Language) เป็นรูปแบบข้อความสำหรับจัดเก็บและส่งข้อมูลที่มีโครงสร้างโดยใช้แท็กที่กำหนดเอง ใช้กันอย่างแพร่หลายในไฟล์การตั้งค่า เว็บเซอร์วิส และการพัฒนา Android ตามข้อมูลของ คณะ consortium W3C ข้อกำหนด XML ยังคงเป็นมาตรฐานที่มั่นคงตั้งแต่ปี 2008 XML ให้โครงสร้างข้อมูลที่เข้มงวดพร้อมความสามารถในการตรวจสอบผ่านโครงสร้าง

ประเด็นสำคัญ

  • XML — ภาษามาร์กอัปที่สามารถขยายได้โดยใช้แท็กที่กำหนดเองสำหรับข้อมูลที่มีโครงสร้าง
  • โครงสร้างที่เข้มงวด — แท็กปิดที่จำเป็น องค์ประกอบราก และการตรวจสอบผ่าน XSD
  • เนมสเปซ — กลไกเพื่อหลีกเลี่ยงความขัดแย้งของชื่อในเอกสารเดียว
  • XSLT — การแปลง XML เป็นรูปแบบอื่น: HTML, PDF, CSV
  • การพัฒนา Android — XML ใช้สำหรับเลย์เอาต์ แมนนิเฟสต์ และทรัพยากร

XML คืออะไร?

XML เป็นภาษามาร์กอัปที่กำหนดชุดกฎสำหรับการเข้ารหัสเอกสารในรูปแบบที่ทั้งมนุษย์และเครื่องจักรสามารถอ่านได้ แตกต่างจาก HTML ตรงที่ XML ไม่มีชุดแท็กที่ตายตัว — นักพัฒนาสร้างแท็กของตนเองที่สอดคล้องกับโครงสร้างข้อมูล

XML ได้รับการพัฒนาโดยคณะ consortium W3C ในปี 1996 โดยเป็นชุดย่อยที่เรียบง่ายของ SGML (Standard Generalized Markup Language) เป้าหมายหลักของ XML คือการแยกเนื้อหาออกจากการนำเสนอข้อมูล แตกต่างจาก HTML ที่อธิบายรูปลักษณ์ภายนอก XML อธิบายโครงสร้างและความหมายของข้อมูล

คุณสมบัติหลักของ XML คือความสามารถในการขยาย หากมีประเภทข้อมูลใหม่เกิดขึ้นในโปรเจกต์ นักพัฒนาก็เพียงเพิ่มแท็กใหม่โดยไม่ต้องเปลี่ยนโครงสร้างที่มีอยู่ ทำให้ XML สะดวกสำหรับการจัดเก็บข้อมูลระยะยาวและการแลกเปลี่ยนระหว่างระบบต่างๆ

พื้นที่การใช้งานหลักของ XML

  • การพัฒนา Android — ไฟล์เลย์เอาต์ แมนนิเฟสต์ ทรัพยากร (strings, colors, themes)
  • การตั้งค่า — Maven POM, Ant build, การตั้งค่าเว็บ (web.xml)
  • เว็บเซอร์วิส — SOAP, XML-RPC, ฟีด RSS/Atom
  • การทำงานเอกสาร — SVG, DocBook, Office Open XML
  • ฐานข้อมูล — SQL Server (ชนิด XML), Oracle, PostgreSQL

ไวยากรณ์และโครงสร้าง XML

ไวยากรณ์ XML เข้มงวดกว่า HTML แท็กเปิดแต่ละตัวต้องมีแท็กปิดที่สอดคล้องกัน แอตทริบิวต์อยู่ในเครื่องหมายอัญประกาศ และชื่อแท็กคำนึงถึงตัวพิมพ์ใหญ่และเล็ก เอกสารต้องมีองค์ประกอบรากหนึ่งตัวที่ประกอบด้วยองค์ประกอบอื่นๆ ทั้งหมด

เอกสาร XML สามารถเริ่มต้นด้วยการประกาศที่ระบุเวอร์ชัน XML และการเข้ารหัส ตามด้วยองค์ประกอบราก ซึ่งภายในอาจมีองค์ประกอบที่ซ้อนกัน แอตทริบิวต์ เนื้อหาข้อความ และความคิดเห็น องค์ประกอบว่างเขียนเป็น <element />

xml
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
    <book id="bk001">
        <title>XML Developer Guide</title>
        <author>John Smith</author>
        <price currency="USD">29.99</price>
        <published>2026-03-15</published>
    </book>
    <book id="bk002">
        <title>Advanced XML Schemas</title>
        <author>Jane Doe</author>
        <price currency="USD">49.99</price>
        </book>
</catalog>

กฎของ XML ที่มีรูปแบบดี

XML ที่มีรูปแบบดี (Well-formed XML) ต้องปฏิบัติตามกฎพื้นฐาน: แท็กปิดเป็นสิ่งจำเป็นสำหรับทุกแท็กเปิด การซ้อนกันเข้มงวด (ห้ามแท็กทับซ้อนกัน) ค่าแอตทริบิวต์อยู่ในเครื่องหมายอัญประกาศเสมอ การละเมิดกฎใดๆ ทำให้เอกสารไม่ถูกต้องและไม่สามารถแยกวิเคราะห์ได้

  1. องค์ประกอบรากหนึ่งตัว — เอกสารมีรากหนึ่งตัวเท่านั้น
  2. การซ้อนกันที่ถูกต้อง — แท็กต้องไม่ทับซ้อนกัน
  3. แท็กปิด — จำเป็นสำหรับทุกองค์ประกอบยกเว้นแท็กปิดตัวเอง
  4. ความคำนึงถึงตัวพิมพ์ — <Book> และ <book> เป็นองค์ประกอบที่แตกต่างกัน
  5. เครื่องหมายอัญประกาศในแอตทริบิวต์ — ค่าแอตทริบิวต์อยู่ในเครื่องหมายอัญประกาศคู่หรือเดี่ยว

เนมสเปซและโครงสร้าง XML

เนมสเปซ XML แก้ปัญหาความขัดแย้งของชื่อเมื่อใช้องค์ประกอบจากพจนานุกรมที่แตกต่างกันในเอกสารเดียว เนมสเปซถูกกำหนดโดยแอตทริบิวต์ xmlns ที่มี URI ซึ่งระบุพจนานุกรมได้อย่างเฉพาะเจาะจง

XML Schema (XSD) เป็นภาษาสำหรับอธิบายโครงสร้างของเอกสาร XML XSD กำหนดว่าองค์ประกอบและแอตทริบิวต์ใดที่ได้รับอนุญาต ชนิดข้อมูลของพวกเขา ข้อบังคับ และข้อจำกัด โครงสร้างช่วยให้สามารถตรวจสอบความถูกต้องของเอกสารโดยอัตโนมัติก่อนการประมวลผล ซึ่งมีความสำคัญอย่างยิ่งสำหรับโซลูชันการรวมระบบ

เทคโนโลยี วัตถุประสงค์ ตัวอย่าง
DTD การตรวจสอบโครงสร้างพื้นฐาน เก่า ความสามารถน้อยกว่า
XSD การกำหนดชนิดและการตรวจสอบที่เข้มงวด มาตรฐานอุตสาหกรรม
RELAX NG ทางเลือกที่กะทัดรัดของ XSD ง่ายกว่าและอ่านง่ายกว่า XSD
XSLT การแปลง XML เป็นรูปแบบอื่น XML เป็น HTML, PDF, CSV
XPath การนำทางและการเลือกโหนด คำสั่งค้นหาไปยังต้นไม้ XML

XML ในการพัฒนามือถือ

XML มีบทบาทสำคัญในการพัฒนา Android ระบบปฏิบัติการ Android ใช้ XML เพื่ออธิบายส่วนติดต่อผู้ใช้ (ไฟล์เลย์เอาต์) การตั้งค่าแอปพลิเคชัน (AndroidManifest.xml) ทรัพยากร (strings, colors, themes) และกราฟิกเวกเตอร์ (VectorDrawable) บน iOS XML ถูกใช้น้อยกว่า โดยส่วนใหญ่สำหรับ Storyboard และไฟล์การตั้งค่า plist

ใน Android แต่ละหน้าจอแอปพลิเคชันถูกอธิบายโดยไฟล์ XML ที่มีลำดับชั้นของส่วนประกอบ View: ConstraintLayout, LinearLayout, TextView, Button วิธีการนี้แยกลอจิกของแอปพลิเคชันออกจากการนำเสนอ ทำให้การบำรุงรักษาและการปรับตัวสำหรับหน้าจอต่างๆ ง่ายขึ้น ไฟล์ XML ทรัพยากรช่วยให้สามารถแปลภาษาแอปพลิเคชันได้โดยไม่ต้องเปลี่ยนโค้ด

ตัวอย่างเลย์เอาต์ Android

ไฟล์เลย์เอาต์ทั่วไปประกอบด้วย ConstraintLayout รากที่มีองค์ประกอบซ้อนกัน แต่ละตัวมีแอตทริบิวต์ตำแหน่ง ขนาด และสไตล์ Android แปลง XML เป็นรูปแบบไบนารี AXML เพื่อเพิ่มประสิทธิภาพเมื่อเริ่มต้นทำงาน

xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/welcome"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/click"
        app:layout_constraintTop_toBottomOf="@id/title"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

การแยกวิเคราะห์ XML บนแพลตฟอร์มมือถือ

การแยกวิเคราะห์ XML บนแพลตฟอร์มมือถือทำได้สองวิธีหลัก: DOM (Document Object Model) โหลดเอกสารทั้งหมดในหน่วยความจำเป็นต้นไม้ SAX (Simple API for XML) อ่านเอกสารแบบสตรีม เรียกตัวจัดการเหตุการณ์ DOM สะดวกสำหรับเอกสารขนาดเล็ก SAX สำหรับไฟล์ขนาดใหญ่ที่มีข้อจำกัดด้านหน่วยความจำ

Android มีตัวแยกวิเคราะห์ในตัว: XmlPullParser สำหรับการแยกวิเคราะห์แบบสตรีม และ DocumentBuilder สำหรับวิธี DOM iOS ใช้ Foundation XMLParser กับโปรโตคอลตัวแทน สำหรับการแปลงวัตถุเป็น XML มักใช้ไลบรารีอย่าง SimpleXML ใน PHP หรือ Jackson XML ใน Java

การแยกวิเคราะห์ XML บน Android (Kotlin)

Android แนะนำให้ใช้ XmlPullParser สำหรับการแยกวิเคราะห์ XML ที่มีประสิทธิภาพ ตัวแยกวิเคราะห์ทำงานในโหมดที่ขับเคลื่อนด้วยเหตุการณ์: เรียก next() เพื่อย้ายไปยังองค์ประกอบถัดไปและส่งคืนชนิดของเหตุการณ์ (START_TAG, TEXT, END_TAG) ซึ่งช่วยให้สามารถประมวลผลเอกสารทุกขนาดด้วยการใช้หน่วยความจำน้อยที่สุด

kotlin
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException
import java.io.IOException

fun parseCatalog(parser: XmlPullParser): List<Book> {
    val books = mutableListOf<Book>()
    var eventType = parser.getEventType()
    var currentBook: Book? = null

    while (eventType != XmlPullParser.END_DOCUMENT) {
        when (eventType) {
            XmlPullParser.START_TAG -> {
                when (parser.getName()) {
                    "book" -> currentBook = Book()
                    "title" -> parser.next()
                    "author" -> parser.next()
                }
            }
            XmlPullParser.TEXT -> {
                currentBook?.apply {
                    title = parser.getText() ?: ""
                }
            }
            XmlPullParser.END_TAG -> {
                if (parser.getName() == "book") {
                    currentBook?.let { books.add(it) }
                }
            }
        }
        eventType = parser.next()
    }
    return books
}

ตัวอย่าง XML ในแอปพลิเคชัน

ตัวอย่างการใช้งาน XML แสดงให้เห็นบทบาทในโปรเจกต์จริง นอกเหนือจากการพัฒนา Android แล้ว XML ยังใช้สำหรับการตั้งค่าการ build การอธิบายข้อมูล และการทำงานเอกสาร ความเข้าใจไวยากรณ์ XML เป็นสิ่งจำเป็นสำหรับการทำงานกับ Maven บริการ SOAP และเครื่องมือองค์กรอื่นๆ อีกมากมาย

การตั้งค่า Maven (POM)

ไฟล์ pom.xml อธิบายโปรเจกต์ Maven: ความพึ่งพา ปลั๊กอิน เวอร์ชัน และโปรไฟล์การ build แต่ละความพึ่งพาถูกระบุด้วยแท็ก groupId, artifactId และ version Maven จะดาวน์โหลดไลบรารีที่ระบุจาก repositories โดยอัตโนมัติ

xml
<?xml version="1.0" encoding="UTF-8"?>
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>retrofit</artifactId>
            <version>2.9.0</version>
        </dependency>
    </dependencies>
</project>

XML vs JSON: เมื่อไรควรเลือกอะไร

การเลือกระหว่าง XML และ JSON ขึ้นอยู่กับข้อกำหนดเฉพาะของโปรเจกต์ JSON เหมาะสำหรับ REST API แอปพลิเคชันมือถือ และการตั้งค่าที่ความกะทัดรัดและความเร็วเป็นสิ่งสำคัญ XML ขาดไม่ได้ในระบบองค์กร การทำงานเอกสาร และการพัฒนา Android ซึ่งต้องการการตรวจสอบที่เข้มงวด เนมสเปซ และการแปลงข้อมูล

XML ชนะในสถานการณ์การจัดเก็บเอกสารระยะยาว ด้วยโครงสร้าง XSD ทำให้เอกสาร XML สามารถตรวจสอบได้โดยอัตโนมัติ ซึ่งมีความสำคัญอย่างยิ่งสำหรับระบบการแพทย์ การเงิน และกฎหมาย การแปลง XSLT ช่วยให้สามารถสร้าง HTML, PDF และรูปแบบอื่นๆ จากแหล่ง XML เดียว ซึ่งทำให้การทำงานเอกสารง่ายขึ้น

ในทางกลับกัน JSON ได้กลายเป็นมาตรฐานสำหรับเว็บ API และแอปพลิเคชันมือถือ ความง่ายในการรวมกับ JavaScript ขนาดที่เล็กกว่า และความเร็วในการแยกวิเคราะห์ที่สูงทำให้ JSON เป็นตัวเลือกที่ต้องการสำหรับ REST API ข้อความ WebSocket และไฟล์การตั้งค่า สำหรับโปรเจกต์ใหม่ส่วนใหญ่ แนะนำให้เริ่มต้นด้วย JSON และเปลี่ยนไปใช้ XML เฉพาะเมื่อมีข้อกำหนดเฉพาะเกิดขึ้น

คำถามที่พบบ่อย

XML แตกต่างจาก HTML อย่างไร?

XML อธิบายโครงสร้างและเนื้อหาของข้อมูล HTML อธิบายรูปลักษณ์และการนำเสนอ XML อนุญาตให้สร้างแท็กใดๆ ก็ได้ HTML มีชุดที่ตายตัว XML เข้มงวดกว่าในไวยากรณ์: แท็กทั้งหมดต้องถูกปิด HTML อนุญาตให้มีแท็กที่ไม่ปิด XML สำหรับข้อมูล HTML สำหรับการแสดงผล

XSD คืออะไรและทำไมต้องใช้?

XSD (XML Schema Definition) เป็นภาษาสำหรับอธิบายโครงสร้างของเอกสาร XML XSD กำหนดว่าองค์ประกอบและแอตทริบิวต์ใดที่ได้รับอนุญาต ชนิดข้อมูลของพวกเขา ข้อบังคับ และข้อจำกัด โครงสร้างช่วยให้สามารถตรวจสอบความถูกต้องของเอกสาร XML โดยอัตโนมัติก่อนการประมวลผล ป้องกันข้อผิดพลาด และรับประกันความถูกต้องของข้อมูล

จะแยกวิเคราะห์ XML บน Android ได้อย่างไร?

บน Android ใช้ XmlPullParser สำหรับการแยกวิเคราะห์ XML — ตัวแยกวิเคราะห์แบบสตรีมในตัว มันทำงานแบบขับเคลื่อนด้วยเหตุการณ์: ประมวลผล START_TAG, TEXT และ END_TAG ในลูป จัดการหน่วยความจำอย่างมีประสิทธิภาพ สำหรับเอกสารขนาดเล็ก ตัวแยกวิเคราะห์ DOM ผ่าน DocumentBuilderFactory ก็เหมาะสม ซึ่งโหลดเอกสารทั้งหมดในหน่วยความจำเป็นต้นไม้ของโหนด

ความแตกต่างระหว่าง DTD และ XSD คืออะไร?

DTD (Document Type Definition) เป็นกลไกการตรวจสอบแบบเก่าที่มีความสามารถจำกัด: ไม่รองรับชนิดข้อมูล (ทุกอย่างเป็นสตริง) และเนมสเปซ XSD เป็นตัวแทนที่ทันสมัยพร้อมการรองรับชนิดข้อมูล (ตัวเลข วันที่ การแจงนับ) เนมสเปซ และความสามารถในการขยาย XSD เองเป็นเอกสาร XML ในขณะที่ DTD ใช้ไวยากรณ์ของตัวเอง

ทำไมต้องใช้เนมสเปซใน XML?

เนมสเปซ ป้องกันความขัดแย้งของชื่อเมื่อเอกสาร XML รวมองค์ประกอบจากแหล่งต่างๆ ตัวอย่างเช่น ในเลย์เอาต์ Android แท็ก View สามารถมาจากทั้ง android.view และไลบรารี แอตทริบิวต์ xmlns ที่มี URI จะระบุแหล่งที่มาของแต่ละองค์ประกอบและแอตทริบิวต์ได้อย่างเฉพาะเจาะจง

สรุป

  • XML — ภาษามาร์กอัปที่สามารถขยายได้โดยใช้แท็กที่กำหนดเองสำหรับข้อมูลที่มีโครงสร้าง
  • ไวยากรณ์ที่เข้มงวด — แท็กปิดที่จำเป็น องค์ประกอบราก ความคำนึงถึงตัวพิมพ์
  • เนมสเปซ และโครงสร้าง XSD ให้การตรวจสอบและป้องกันความขัดแย้งของชื่อ
  • Android ใช้ XML สำหรับส่วนติดต่อ ทรัพยากร และการตั้งค่าแอปพลิเคชัน
  • การแยกวิเคราะห์ ทำผ่าน XmlPullParser (สตรีม) หรือ DOM (ในหน่วยความจำ)
  • XSLT ช่วยให้แปลง XML เป็น HTML, PDF และรูปแบบอื่นๆ
  • ได้รับความนิยมน้อยกว่า ใน REST API กว่า JSON แต่ XML ขาดไม่ได้ใน Enterprise และ Android

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม