Μορφοποίηση και εσοχή XML
- Πίνακας ελέγχου
- Τεκμηρίωση
- API
Γιατί να μορφοποιήσετε XML;
Η μορφοποίηση XML (ονομάζεται επίσης μορφοποίηση XML, εσοχή XML ή όμορφη εκτύπωση) αποτελείται από αναδιοργανώστε ένα συμπαγές ή ελαχιστοποιημένο έγγραφο XML σε μια δομή με εσοχή, ευανάγνωστη γραμμή προς γραμμή. Η καλά διαμορφωμένη XML βελτιώνει την αναγνωσιμότητα από τον άνθρωπο, κάτι που είναι απαραίτητο κατά την ανάγνωση μια απάντηση SOAP, περιηγηθείτε σε μια ροή RSS ή επιθεωρήστε τα περιεχόμενα ενός αρχείου διαμόρφωσης.
Συγκεκριμένα, διαμορφώνουμε την XML μας για τέσσερις βασικούς λόγους:
- Εντοπισμός σφαλμάτων: εντοπίστε γρήγορα μια μη κλειστή ετικέτα, ένα χαρακτηριστικό που λείπει ή μια ασυνεπή δομή.
- Μη αυτόματη ενοποίηση: αντιγράψτε καθαρά ένα τμήμα σε ένα αρχείο διαμόρφωσης χωρίς να σπάσετε την υπάρχουσα εσοχή.
- Επισκόπηση κώδικα: συγκρίνετε δύο εκδόσεις ενός εγγράφου XML σε μια διαφορά Git που γίνεται αναγνώσιμη όταν κάθε ετικέτα βρίσκεται στη δική της γραμμή.
- Τεκμηρίωση και παραδείγματα: Η μορφοποιημένη XML είναι πολύ πιο εκπαιδευτική σε ένα τεχνικό έγγραφο ή στο README.
Τυπικές περιπτώσεις χρήσης
Η XML παραμένει πανταχού παρούσα στο οικοσύστημα λογισμικού. Εδώ είναι οι μορφές στις οποίες οι προγραμματιστές πιο συχνά χρησιμοποιούν έναν μορφοποιητή XML:
- Αποκρίσεις SOAP: Οι φάκελοι
που επιστρέφονται από τις υπηρεσίες ιστού SOAP συνήθως φτάνουν ελαχιστοποιημένοι. - Ροές δεδομένων RSS και Atom: για επιθεώρηση ή έλεγχο μιας ροής διανομής. Ρυθμίσεις
- Spring, Maven (
pom.xml), Ant, Ivy: αρχεία έκδοσης Java και εξαρτήσεων. AndroidManifest.xmlκαι άλλους πόρους XML ενός έργου Android.- Αρχεία SVG: Ένα διανυσματικό γραφικό που εξάγεται από λογισμικό σχεδιασμού συχνά συμπιέζεται σε μία γραμμή.
- Εξαγωγές ηλεκτρονικού εμπορίου: ροές προϊόντων Αγορών Google, εξαγωγές Magento, Shopify ή PrestaShop.
- Έγγραφα OOXML: Τα αρχεία
.docx,.xlsxκαι.pptxείναι αρχεία ZIP που περιέχουν αρχεία XML που συχνά πρέπει να ελέγχονται. - Χάρτες ιστοτόπου XML: το
sitemap.xmlεξυπηρετείται στις μηχανές αναζήτησης.
Πώς λειτουργεί η μορφοποίηση XML
Ένας μορφοποιητής XML δεν προσθέτει απλά κενά τυχαία. Εκτελεί δύο βήματα:
- Ανάλυση: το έγγραφο διαβάζεται και στη συνέχεια μετατρέπεται σε δέντρο DOM (Document Object Model). Αυτό το βήμα επιβεβαιώνει επίσης ότι το XML είναι καλά διαμορφωμένο (σωστά ένθετες ετικέτες, χαρακτηριστικά σε εισαγωγικά, ένα μόνο ριζικό στοιχείο).
- Σειριοποίηση με εσοχή: Το δέντρο DOM εκπέμπεται εκ νέου ως κείμενο με αλλαγές γραμμής μεταξύ στοιχείων και εσοχή ανάλογη με το βάθος στο δέντρο.
Αυτή η προσέγγιση δέντρου διασφαλίζει ότι η λογική δομή του εγγράφου παραμένει αυστηρά πανομοιότυπη: τροποποιούνται μόνο ασήμαντα κενά μεταξύ των ετικετών. Ενότητες CDATA, σχόλια και οι οδηγίες επεξεργασίας διατηρούνται. Πιο προηγμένοι μετασχηματισμοί (XSLT) ή ερωτήματα (XPath) λειτουργούν σε αυτό το ίδιο δέντρο DOM.
Πώς να χρησιμοποιήσετε το XML Formatter
Η διαδικασία είναι σκόπιμα απλή:
- Επικολλήστε το έγγραφό σας XML στο πλαίσιο κειμένου ή ανεβάστε ένα αρχείο
.xml. - Επικύρωση της φόρμας: το έγγραφο αναλύεται και δημιουργείται αυτόματα εσοχή.
- Το μορφοποιημένο αποτέλεσμα εμφανίζεται στην περιοχή εξόδου. Σε περίπτωση σφάλματος ανάλυσης, ένα μήνυμα υποδεικνύει τη φύση και την κατά προσέγγιση θέση του προβλήματος.
- Αντιγράψτε το αποτέλεσμα με το ειδικό κουμπί ή κατεβάστε το για να το ενσωματώσετε απευθείας στο έργο σας.
Βέλτιστες πρακτικές εσοχής XML
Μερικές συμβάσεις που πρέπει να ακολουθήσετε για την παραγωγή καθαρού και ανθεκτικού XML:
- Εσοχή: 2 ή 4 κενά ανάλογα με τη σύμβαση της ομάδας σας. Παραμείνετε συνεπείς σε όλο το έργο.
- Αλλαγές γραμμής: ένα στοιχείο ανά γραμμή, το οποίο κάνει τις διαφοροποιήσεις Git να μπορούν να χρησιμοποιηθούν.
- Ενότητες CDATA: ένας καλός μορφοποιητής διατηρεί τα μπλοκ
στο σύνολό τους χωρίς να επανατοποθετεί το περιεχόμενό τους, το οποίο αντιμετωπίζεται ως απλό κείμενο. - Κωδικοποίηση: δηλώνετε πάντα την κωδικοποίηση στην πρώτη γραμμή με
. Το UTF-8 είναι το de facto πρότυπο. - Χαρακτηριστικά: Εάν ένα στοιχείο έχει πολλά χαρακτηριστικά, ορισμένες ομάδες τα αναδιπλώνουν για αναγνωσιμότητα. Διαφορετικά, παραμένουν στην ίδια γραμμή με την αρχική ετικέτα.
- Σχόλια: Το
πρέπει να διατηρηθεί ως έχει από τον εκπαιδευτή.
Παράδειγμα πριν / μετά
Εδώ είναι ένα συγκεκριμένο παράδειγμα μιας συμπαγούς XML που διακοσμείται από τον μορφοποιητή.
Πριν από (μονή γραμμή, δυσανάγνωστη):
- val
- val2
Μετά (μορφοποίηση με 2 κενά):
- val
- val2
Η λογική δομή είναι αυστηρά πανομοιότυπη: αλλάζει μόνο η οπτική διάταξη.
Ολοκληρωμένο παράδειγμα
Ένα έγγραφο XML plus volumineux après formatage μοιάζει με ceci :
John Doe
johndoe@example.com
<διεύθυνση>
123 Main St
Springfield
IL
62704
ΗΠΑ
<Αριθμοί τηλεφώνου>
555-1234
555-5678
true
σκοτεινό
2024-06-14T09:30:00Z
Συχνές ερωτήσεις
Τι είναι η καλά διαμορφωμένη XML;
Ένα XML λέγεται ότι είναι καλοσχηματισμένο όταν σέβεται τους βασικούς συντακτικούς κανόνες: ένα μεμονωμένο ριζικό στοιχείο, σωστά ένθετες και κλειστές ετικέτες, χαρακτηριστικά σε εισαγωγικά, ειδικούς χαρακτήρες διαφυγής (&, <, >). Αυτό αποτελεί προϋπόθεση για να μπορέσετε να αναλύσετε το έγγραφο. Δεν πρέπει να συγχέεται με το έγκυρο XML, το οποίο σέβεται επίσης ένα σχήμα XSD ή ένα DTD.
Ποια είναι η διαφορά μεταξύ της μορφοποίησης (όμορφης εκτύπωσης) και της ελαχιστοποίησης XML;
Η όμορφη εκτύπωση προσθέτει αλλαγές γραμμής και εσοχές για ανθρώπινη ανάγνωση. Η ελαχιστοποίηση κάνει το αντίθετο: αφαιρεί όλους τους μη σημαντικούς χώρους για να μειώσει το μέγεθος του εγγράφου, το οποίο είναι χρήσιμο για τη μεταφορά δικτύου (αποκρίσεις SOAP, XML API). Τα δύο έγγραφα είναι σημασιολογικά ισοδύναμα.
Διατηρούνται τα σχόλια και οι ενότητες CDATA κατά τη μορφοποίηση;
Ναι. Ένας σωστός μορφοποιητής διατηρεί σχόλια, ενότητες και οδηγίες επεξεργασίας ( ... ?>). Το περιεχόμενο ενός CDATA παραμένει άθικτο χωρίς επανατοποθέτηση, καθώς αντιμετωπίζεται ως απλό κείμενο. Ελέγξτε το αποτέλεσμα εάν τα σχόλιά σας είναι τεκμηριωμένης σημασίας.
Υποστηρίζονται χώροι ονομάτων XML (xmlns);
Ναι. Οι δηλώσεις χώρου ονομάτων (xmlns:soap="...") και τα σχετικά προθέματα () διατηρούνται ως έχουν. Ο μορφοποιητής δεν μετονομάζει προθέματα ούτε μετακινεί δηλώσεις στο δέντρο, διασφαλίζοντας ότι η σημασιολογία του εγγράφου παραμένει η ίδια. Οι προεπιλεγμένοι χώροι ονομάτων (χωρίς πρόθεμα) διατηρούνται επίσης στο επίπεδο δήλωσης.
Θα πρέπει να κάνουμε εσοχές με κενά ή καρτέλες;
Και τα δύο λειτουργούν, αλλά τα κενά είναι η κυρίαρχη σύμβαση επειδή εμφανίζονται παντού παντού (τερματικά, προγράμματα περιήγησης, Git diff). 2 ή 4 κενά ανάλογα με την πολυγλωσσία της XML σας: 2 για έγγραφα με υψηλή ένθεση (SVG, διαμορφώσεις Spring), 4 για επίπεδα έγγραφα. Το κύριο πράγμα παραμένει η συνέπεια σε όλο το έργο.
Αλλάζει ο μορφοποιητής τη σημασιολογία του εγγράφου;
Όχι. Προσαρμόζονται μόνο τα λευκά κενά μεταξύ των ετικετών. Η δομή DOM, οι τιμές χαρακτηριστικών και το περιεχόμενο κειμένου των στοιχείων παραμένουν ίδια. Μία εξαίρεση: το ουσιαστικό περιεχόμενο κειμένου (με xml:space="preserve") θα πρέπει να διατηρείται ως έχει, ελέγξτε αυτήν την πτυχή εάν τα δεδομένα σας περιέχουν σημαντικά κενά.
Μπορούμε να επικυρώσουμε την XML ταυτόχρονα με τη μορφοποίησή της;
Ο μορφοποιητής εκτελεί ήδη συντακτική επικύρωση (καλά διαμορφωμένη XML) αφού πρέπει να αναλύσει το έγγραφο. Για επικύρωση έναντι ενός σχήματος XSD ή ενός DTD, χρειάζεστε ένα αποκλειστικό εργαλείο: η δομική επικύρωση υπερβαίνει το πεδίο εφαρμογής ενός απλού μορφοποιητή. Τα xmllint --schema ή xerces είναι κατάλληλα για αυτό το πρόσθετο βήμα.
Παράδειγμα αιτήματος
curl -X POST https://cdrn.fr/api/v1/tools/xml-formatter/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Σχήμα εισόδου
| Πεδίο | Τύπος | Απαιτείται | Προεπιλογή |
|---|---|---|---|
input |
text | ✓ | – |
Σημεία πρόσβασης
GET https://cdrn.fr/api/v1/tools- εμφανίζει όλα τα διαθέσιμα εργαλείαGET https://cdrn.fr/api/v1/tools/xml-formatter- ανακτά το σχήμα αυτού του εργαλείουPOST https://cdrn.fr/api/v1/tools/xml-formatter/execute- εκτελεί αυτό το εργαλείο με payload JSON