Η XML (eXtensible Markup Language) είναι μια μορφή κειμένου για αποθήκευση και μετάδοση δομημένων δεδομένων με χρήση προσαρμοσμένων ετικετών. Χρησιμοποιείται ευρέως σε αρχεία διαμόρφωσης, υπηρεσίες web και ανάπτυξη Android. Σύμφωνα με την κοινοπραξία W3C, η προδιαγραφή XML παραμένει σταθερό πρότυπο από το 2008. XML παρέχει αυστηρή δομή δεδομένων με δυνατότητα επικύρωσης μέσω σχημάτων.
Βασικά σημεία
XML είναι μια γλώσσα σήμανσης που ορίζει ένα σύνολο κανόνων για την κωδικοποίηση εγγράφων σε μορφή αναγνώσιμη από άνθρωπο και μηχανή. Σε αντίθεση με την HTML, η XML δεν έχει σταθερό σύνολο ετικετών — ο προγραμματιστής δημιουργεί δικές του ετικέτες που αντιστοιχούν στη δομή των δεδομένων.
Η XML αναπτύχθηκε από την κοινοπραξία W3C το 1996 ως ένα απλοποιημένο υποσύνολο της SGML (Standard Generalized Markup Language). Ο κύριος σκοπός της XML είναι ο διαχωρισμός του περιεχομένου από την παρουσίαση των δεδομένων. Σε αντίθεση με την HTML που περιγράφει την εμφάνιση, η XML περιγράφει τη δομή και τη σημασία των δεδομένων.
Η βασική ιδιότητα της XML είναι η επεκτασιμότητα. Εάν εμφανιστούν νέοι τύποι δεδομένων στο έργο, ο προγραμματιστής απλώς προσθέτει νέες ετικέτες χωρίς να αλλάξει την υπάρχουσα δομή. Αυτό καθιστά την XML βολική για μακροπρόθεσμη αποθήκευση δεδομένων και ανταλλαγή μεταξύ διαφορετικών συστημάτων.
Η σύνταξη XML είναι αυστηρότερη από την HTML. Κάθε ετικέτα έναρξης πρέπει να έχει αντίστοιχη ετικέτα λήξης, τα χαρακτηριστικά περικλείονται σε εισαγωγικά, τα ονόματα ετικετών είναι ευαίσθητα σε πεζά-κεφαλαία. Το έγγραφο πρέπει να έχει ακριβώς ένα ριζικό στοιχείο που περιέχει όλα τα άλλα.
Ένα έγγραφο 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>
Well-formed 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 παίζει καθοριστικό ρόλο στην ανάπτυξη Android. Το λειτουργικό σύστημα Android χρησιμοποιεί XML για την περιγραφή της διεπαφής χρήστη (αρχεία διάταξης), διαμόρφωση εφαρμογής (AndroidManifest.xml), πόρους (συμβολοσειρές, χρώματα, θέματα) και διανυσματικά γραφικά (VectorDrawable). Στο iOS, η XML χρησιμοποιείται λιγότερο, κυρίως για Storyboard και αρχεία διαμόρφωσης plist.
Στο Android, κάθε οθόνη της εφαρμογής περιγράφεται από ένα αρχείο XML με ιεραρχία στοιχείων View: ConstraintLayout, LinearLayout, TextView, Button. Αυτή η προσέγγιση διαχωρίζει τη λογική της εφαρμογής από την παρουσίαση, απλοποιώντας τη συντήρηση και την προσαρμογή σε διαφορετικές οθόνες. Τα αρχεία XML πόρων επιτρέπουν τον εντοπισμό της εφαρμογής χωρίς αλλαγή κώδικα.
Ένα τυπικό αρχείο διάταξης περιέχει ένα ριζικό ConstraintLayout με ένθετα στοιχεία, καθένα από τα οποία έχει χαρακτηριστικά θέσης, μεγέθους και στυλ. Το Android μεταγλωττίζει την XML σε δυαδική μορφή AXML για βελτιστοποίηση απόδοσης κατά την εκκίνηση.
<?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 σε κινητές πλατφόρμες γίνεται με δύο κύριες προσεγγίσεις: το DOM (Document Object Model) φορτώνει ολόκληρο το έγγραφο στη μνήμη ως δέντρο, το SAX (Simple API for XML) διαβάζει το έγγραφο ροϊκά, καλώντας χειριστές συμβάντων. Το DOM είναι βολικό για μικρά έγγραφα, το SAX — για μεγάλα αρχεία με περιορισμούς μνήμης.
Στο Android είναι διαθέσιμοι ενσωματωμένοι αναλυτές: XmlPullParser για ροϊκή ανάλυση και DocumentBuilder για την προσέγγιση DOM. Στο iOS χρησιμοποιείται το Foundation XMLParser με πρωτόκολλο εκπροσώπου. Για σειριοποίηση αντικειμένων σε XML χρησιμοποιούνται συχνά βιβλιοθήκες όπως SimpleXML σε PHP ή Jackson XML σε Java.
Στο Android συνιστάται η χρήση XmlPullParser για αποτελεσματική ανάλυση XML. Ο αναλυτής λειτουργεί σε λειτουργία συμβάντων: καλεί next() για μετάβαση στο επόμενο στοιχείο και επιστρέφει τον τύπο συμβάντος (START_TAG, TEXT, END_TAG). Αυτό επιτρέπει την επεξεργασία εγγράφων οποιουδήποτε μεγέθους με ελάχιστη κατανάλωση μνήμης.
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 δείχνουν τον ρόλο της σε πραγματικά έργα. Εκτός από την ανάπτυξη Android, η XML χρησιμοποιείται για διαμόρφωση μεταγλώττισης, περιγραφή δεδομένων και ροή εγγράφων. Η γνώση της σύνταξης XML είναι απαραίτητη για εργασία με Maven, υπηρεσίες SOAP και πολλά εργαλεία enterprise.
Το αρχείο pom.xml περιγράφει το έργο Maven: εξαρτήσεις, πρόσθετα, εκδόσεις και προφίλ μεταγλώττισης. Κάθε εξάρτηση καθορίζεται με ετικέτες groupId, artifactId και version. Το Maven φορτώνει αυτόματα τις καθορισμένες βιβλιοθήκες από τα αποθετήρια.
<?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 και 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 — για εμφάνιση.
XSD (XML Schema Definition) είναι μια γλώσσα περιγραφής της δομής ενός εγγράφου XML. Το XSD καθορίζει ποια στοιχεία και χαρακτηριστικά επιτρέπονται, τους τύπους δεδομένων τους, υποχρεωτικότητα και περιορισμούς. Το σχήμα επιτρέπει την αυτόματη επικύρωση του εγγράφου XML πριν από την επεξεργασία, αποτρέποντας σφάλματα και εγγυώντας την ακεραιότητα των δεδομένων.
Στο Android για ανάλυση XML χρησιμοποιήστε το XmlPullParser — έναν ενσωματωμένο αναλυτή ροής. Λειτουργεί σε λειτουργία συμβάντων: επεξεργάζεται START_TAG, TEXT και END_TAG σε έναν βρόχο, διαχειριζόμενος αποτελεσματικά τη μνήμη. Για μικρά έγγραφα, ο αναλυτής DOM μέσω DocumentBuilderFactory που φορτώνει ολόκληρο το έγγραφο στη μνήμη ως δέντρο κόμβων είναι κατάλληλος.
DTD (Document Type Definition) είναι ένας παλιός μηχανισμός επικύρωσης με περιορισμένες δυνατότητες: δεν υποστηρίζει τύπους δεδομένων (τα πάντα είναι συμβολοσειρές) και χώρους ονομάτων. XSD είναι μια σύγχρονη αντικατάσταση με υποστήριξη τύπων δεδομένων (αριθμοί, ημερομηνίες, απαριθμήσεις), χώρων ονομάτων και επεκτασιμότητας. Το XSD είναι το ίδιο ένα έγγραφο XML, το DTD χρησιμοποιεί δική του σύνταξη.
Οι χώροι ονομάτων αποτρέπουν συγκρούσεις ονομάτων όταν ένα έγγραφο XML συνδυάζει στοιχεία από διαφορετικές πηγές. Για παράδειγμα, στη διάταξη Android, η ετικέτα View μπορεί να προέρχεται τόσο από android.view όσο και από μια βιβλιοθήκη. Το χαρακτηριστικό xmlns με URI προσδιορίζει μοναδικά την πηγή κάθε στοιχείου και χαρακτηριστικού.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης