Σχετικά με αυτό το εργαλείο
Η μορφοποίηση XML δημιουργεί εσοχές ένθετα στοιχεία, έτσι ώστε η ιεραρχία του εγγράφου να γίνεται ορατή. Η συμπαγής XML — τα πάντα σε μία γραμμή — είναι τεχνικά έγκυρη και χρήσιμη για μετάδοση, αλλά δυσανάγνωστη για τον άνθρωπο. Η μορφοποιημένη XML προσθέτει διαλείμματα γραμμής μεταξύ στοιχείων και εσοχές στα παιδιά μέσα στους γονείς τους, καθιστώντας την σάρωση, διάχυση και επεξεργάσιμη με το χέρι.
Αυτός ο μορφοποιητής αναλύει την είσοδο χρησιμοποιώντας το DOMParser για να επιβεβαιώσει την καλή διαμόρφωση και, στη συνέχεια, περπατά το DOM που προκύπτει για να εκπέμψει έξοδο με εσοχή. Τα σχόλια, οι οδηγίες επεξεργασίας και οι ενότητες CDATA διατηρούνται. Οι ετικέτες που κλείνουν μόνοι τους (αυτές χωρίς παιδιά) διατηρούνται συμπαγείς σε μία μόνο γραμμή. Οι ετικέτες με παιδιά απλώνονται σε πολλές γραμμές με τα παιδιά με εσοχή.
Η εσοχή δύο διαστημάτων είναι η προεπιλογή, που ταιριάζει με την πιο κοινή σύμβαση XML. Ο μορφοποιητής είναι συντηρητικός σχετικά με την αναδιαμόρφωση: διατηρείται η υπάρχουσα δομή, αλλάζει μόνο το κενό διάστημα μεταξύ των στοιχείων. Τα δεδομένα μεταφέρονται μέσω οποιουδήποτε αναλυτή XML πανομοιότυπα πριν και μετά τη μορφοποίηση.
Γιατί να μορφοποιήσετε XML
Το συμπαγές XML δεν είναι αναγνώσιμο. Οι αποκρίσεις SOAP, οι ροές RSS και πολλά αρχεία διαμόρφωσης φτάνουν ως XML μιας γραμμής που είναι τεχνικά έγκυρο αλλά πρακτικά αδιαφανές. Η μορφοποίηση αποκαλύπτει τη δομή του εγγράφου, σας επιτρέπει να εντοπίσετε συγκεκριμένα στοιχεία και καθιστά σημαντικές τις διαφορές στον έλεγχο έκδοσης.
Η μορφοποίηση χρησιμεύει επίσης ως έλεγχος εγκυρότητας. Εάν η XML αποτύχει να αναλύσει κατά τη μορφοποίηση, το μήνυμα σφάλματος προσδιορίζει το πρόβλημα — συνήθως μη κλειστές ετικέτες, αταίριαστα ονόματα στοιχείων ή μη έγκυρους χαρακτήρες. Η καταγραφή σφαλμάτων XML πριν από την αποστολή σε έναν αυστηρό καταναλωτή εξοικονομεί χρόνο εντοπισμού σφαλμάτων.
Τεχνικές λεπτομέρειες
Το DOMParser παράγει ένα XML DOM. Ο μορφοποιητής περπατά πρώτα στο δέντρο σε βάθος, εκπέμποντας ετικέτες ανοίγματος, θυγατρικές με εσοχές και ετικέτες κλεισίματος. Τα χαρακτηριστικά του στοιχείου διατηρούνται στην ετικέτα ανοίγματος. Η σειρά χαρακτηριστικών ταιριάζει με την πηγή.
Σημαντικό κενό διάστημα μέσα στους κόμβους κειμένου διατηρείται — ο μορφοποιητής δεν μπορεί να αλλάξει με ασφάλεια τον κενό χώρο περιεχομένου επειδή μπορεί να έχει νόημα (οι κανόνες διατήρησης χώρου XML διαφέρουν μεταξύ των σχημάτων). Μόνο το κενό διάστημα μεταξύ των στοιχείων αλλάζει.
Τα στοιχεία που κλείνουν αυτόματα (χωρίς παιδιά) εκπέμπονται ως <tag attr="val"/>. Τα στοιχεία με μόνο περιεχόμενο κειμένου εκπέμπονται ως <tag>κείμενο</tag>. Στοιχεία με θυγατρικά στοιχεία εκπέμπουν σε πολλαπλές γραμμές με θυγατρικές εσοχές. Οι ενότητες CDATA, τα σχόλια και οι οδηγίες επεξεργασίας εκπέμπονται με τους αρχικούς οριοθέτες και το περιεχόμενό τους.
Συχνές ερωτήσεις
- Ποια σφάλματα XML εντοπίζει αυτό;
- Το εργαλείο εντοπίζει μη κλειστές ετικέτες, ετικέτες ανοίγματος/κλεισίματος που δεν ταιριάζουν, μη έγκυρες αναφορές χαρακτήρων, στοιχεία που λείπουν, χαρακτηριστικά με κακή μορφή και ζητήματα κωδικοποίησης. Τα μηνύματα σφάλματος περιλαμβάνουν αριθμούς γραμμής για να σας βοηθήσουν να εντοπίσετε προβλήματα.
- Αλλάζει η μορφοποίηση το περιεχόμενο XML;
- Η μορφοποίηση προσαρμόζει μόνο το κενό διάστημα και την εσοχή μεταξύ των στοιχείων. Το περιεχόμενο των στοιχείων, τα χαρακτηριστικά, οι ενότητες CDATA και οι οδηγίες επεξεργασίας διατηρούνται ακριβώς όπως έχουν εισαχθεί.
- Μπορεί να χειριστεί μεγάλα αρχεία XML;
- Το εργαλείο χειρίζεται αρχεία έως και αρκετά megabyte στο πρόγραμμα περιήγησης. Για πολύ μεγάλα έγγραφα XML (50MB+), σκεφτείτε να χρησιμοποιήσετε εργαλεία γραμμής εντολών όπως το xmllint για καλύτερη απόδοση.
- Υποστηρίζει χώρους ονομάτων XML;
- Ναι. Ο μορφοποιητής χειρίζεται σωστά δηλώσεις χώρων ονομάτων (xmlns), στοιχεία με πρόθεμα και προεπιλεγμένους χώρους ονομάτων. Οι χώροι ονομάτων διατηρούνται στη μορφοποιημένη έξοδο.
- Διατηρούνται οι χώροι ονομάτων;
- Ναι. Τα χαρακτηριστικά xmlns και xmlns:prefix διατηρούνται στα στοιχεία όπου εμφανίζονται στην πηγή.
- Μπορώ να ελαχιστοποιήσω το XML σε μία μόνο γραμμή;
- Ορισμένοι μορφοποιητές XML προσφέρουν ελαχιστοποίηση. Αυτό το εργαλείο εστιάζει στη μορφοποίηση. Η ελαχιστοποιημένη XML μπορεί να παραχθεί αφαιρώντας κενό διάστημα μεταξύ στοιχείων με ένα regex ή ειδικό εργαλείο.
- Η XML μου έχει ανέβει σε διακομιστή;
- Όχι. Το DOMParser εκτελείται στο πρόγραμμα περιήγησής σας. ο μορφοποιητής εκτελείται στο πρόγραμμα περιήγησής σας.
- Θα αλλάξει το κενό διάστημα μέσα στους κόμβους κειμένου;
- Όχι. Το κενό διάστημα του κόμβου κειμένου διατηρείται επειδή οι κανόνες διατήρησης χώρου XML διαφέρουν ανάλογα με το σχήμα. Ο μορφοποιητής αλλάζει μόνο κενό διάστημα μεταξύ στοιχείων.