XML: τι είναι, δομή εγγράφου και αρχή λειτουργίας

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-03-08 Χρόνος ανάγνωσης: 8 λεπ

Η XML (eXtensible Markup Language) είναι μια μορφή κειμένου για αποθήκευση και μετάδοση δομημένων δεδομένων με χρήση προσαρμοσμένων ετικετών. Χρησιμοποιείται ευρέως σε αρχεία διαμόρφωσης, υπηρεσίες web και ανάπτυξη Android. Σύμφωνα με την κοινοπραξία W3C, η προδιαγραφή XML παραμένει σταθερό πρότυπο από το 2008. XML παρέχει αυστηρή δομή δεδομένων με δυνατότητα επικύρωσης μέσω σχημάτων.

Βασικά σημεία

  • XML — επεκτάσιμη γλώσσα σήμανσης με προσαρμοσμένες ετικέτες για δομημένα δεδομένα
  • Αυστηρή δομή — υποχρεωτικές ετικέτες κλεισίματος, ριζικό στοιχείο και επικύρωση μέσω XSD
  • Χώροι ονομάτων — μηχανισμός αποφυγής συγκρούσεων ονομάτων σε ένα έγγραφο
  • XSLT — μετατροπή XML σε άλλες μορφές: HTML, PDF, CSV
  • Ανάπτυξη Android — η XML χρησιμοποιείται για διατάξεις, δηλωτικό και πόρους

Τι είναι η XML;

XML είναι μια γλώσσα σήμανσης που ορίζει ένα σύνολο κανόνων για την κωδικοποίηση εγγράφων σε μορφή αναγνώσιμη από άνθρωπο και μηχανή. Σε αντίθεση με την HTML, η XML δεν έχει σταθερό σύνολο ετικετών — ο προγραμματιστής δημιουργεί δικές του ετικέτες που αντιστοιχούν στη δομή των δεδομένων.

Η XML αναπτύχθηκε από την κοινοπραξία W3C το 1996 ως ένα απλοποιημένο υποσύνολο της SGML (Standard Generalized Markup Language). Ο κύριος σκοπός της XML είναι ο διαχωρισμός του περιεχομένου από την παρουσίαση των δεδομένων. Σε αντίθεση με την HTML που περιγράφει την εμφάνιση, η XML περιγράφει τη δομή και τη σημασία των δεδομένων.

Η βασική ιδιότητα της XML είναι η επεκτασιμότητα. Εάν εμφανιστούν νέοι τύποι δεδομένων στο έργο, ο προγραμματιστής απλώς προσθέτει νέες ετικέτες χωρίς να αλλάξει την υπάρχουσα δομή. Αυτό καθιστά την XML βολική για μακροπρόθεσμη αποθήκευση δεδομένων και ανταλλαγή μεταξύ διαφορετικών συστημάτων.

Κύριοι τομείς εφαρμογής XML

  • Ανάπτυξη Android — αρχεία διάταξης, δηλωτικό, πόροι (strings, colors, themes)
  • Διαμόρφωση — Maven POM, Ant build, διαμορφώσεις web (web.xml)
  • Υπηρεσίες web — SOAP, XML-RPC, ροές RSS/Atom
  • Ροή εγγράφων — SVG, DocBook, Office Open XML
  • Βάσεις δεδομένων — SQL Server (XML type), Oracle, PostgreSQL

Σύνταξη και δομή XML

Η σύνταξη XML είναι αυστηρότερη από την HTML. Κάθε ετικέτα έναρξης πρέπει να έχει αντίστοιχη ετικέτα λήξης, τα χαρακτηριστικά περικλείονται σε εισαγωγικά, τα ονόματα ετικετών είναι ευαίσθητα σε πεζά-κεφαλαία. Το έγγραφο πρέπει να έχει ακριβώς ένα ριζικό στοιχείο που περιέχει όλα τα άλλα.

Ένα έγγραφο XML μπορεί να ξεκινά με μια δήλωση που αναφέρει την έκδοση XML και την κωδικοποίηση. Στη συνέχεια ακολουθεί το ριζικό στοιχείο, μέσα στο οποίο μπορεί να υπάρχουν ένθετα στοιχεία, χαρακτηριστικά, περιεχόμενο κειμένου και σχόλια. Τα κενά στοιχεία γράφονται ως .

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

Well-formed XML πρέπει να τηρεί βασικούς κανόνες: οι ετικέτες κλεισίματος είναι υποχρεωτικές για κάθε ετικέτα έναρξης, η ένθεση είναι αυστηρή (η διασταύρωση ετικετών απαγορεύεται), οι τιμές χαρακτηριστικών είναι πάντα σε εισαγωγικά. Η παραβίαση οποιουδήποτε κανόνα καθιστά το έγγραφο μη έγκυρο και μη αναλύσιμο.

  1. Ένα ριζικό στοιχείο — το έγγραφο έχει ακριβώς μία ρίζα
  2. Σωστή ένθεση — οι ετικέτες δεν πρέπει να διασταυρώνονται
  3. Ετικέτες κλεισίματος — υποχρεωτικές για όλα τα στοιχεία εκτός από αυτο-κλειόμενα
  4. Ευαισθησία σε πεζά-κεφαλαία — <Book> και <book> είναι διαφορετικά στοιχεία
  5. Εισαγωγικά σε χαρακτηριστικά — τιμές χαρακτηριστικών σε διπλά ή μονά εισαγωγικά

Χώροι ονομάτων και σχήματα XML

Οι χώροι ονομάτων XML (XML Namespaces) λύνουν το πρόβλημα συγκρούσεων ονομάτων όταν σε ένα έγγραφο χρησιμοποιούνται στοιχεία από διαφορετικά λεξικά. Ο χώρος ονομάτων ορίζεται από το χαρακτηριστικό 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), πόρους (συμβολοσειρές, χρώματα, θέματα) και διανυσματικά γραφικά (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 χρησιμοποιείται για διαμόρφωση μεταγλώττισης, περιγραφή δεδομένων και ροή εγγράφων. Η γνώση της σύνταξης XML είναι απαραίτητη για εργασία με Maven, υπηρεσίες SOAP και πολλά εργαλεία enterprise.

Διαμόρφωση Maven (POM)

Το αρχείο pom.xml περιγράφει το έργο Maven: εξαρτήσεις, πρόσθετα, εκδόσεις και προφίλ μεταγλώττισης. Κάθε εξάρτηση καθορίζεται με ετικέτες groupId, artifactId και version. Το Maven φορτώνει αυτόματα τις καθορισμένες βιβλιοθήκες από τα αποθετήρια.

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, από την πλευρά του, έχει γίνει το πρότυπο για web 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 για ανάλυση XML χρησιμοποιήστε το XmlPullParser — έναν ενσωματωμένο αναλυτή ροής. Λειτουργεί σε λειτουργία συμβάντων: επεξεργάζεται 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. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης