Πώς να εργαστείτε με προσαρμοσμένη XML σήμανση στο .NET

Πώς να εργαστείτε με προσαρμοσμένη XML σήμανση στο .NET

Πώς να εργαστείτε με προσαρμοσμένη σήμανση XML στο .NET

Ένα έγγραφο Word μπορεί να μεταφέρει προσαρμοσμένα δεδομένα XML παράλληλα με το ορατό περιεχόμενό του — δεδομένα που χρησιμοποιούνται για τη σύνδεση ελέγχων περιεχομένου, την αποθήκευση μεταδεδομένων ειδικών για την εφαρμογή ή την ενσωμάτωση τμημάτων που προστέθηκαν από άλλη εφαρμογή. Αυτός ο οδηγός δείχνει πώς να διαβάσετε αυτά τα δεδομένα, να προσθέσετε νέα προσαρμοσμένα τμήματα XML και να εξετάσετε τις παλαιότερες ετικέτες έξυπνης λειτουργίας (smart tags) που ενδέχεται να περιέχουν τα παλαιότερα έγγραφα, χρησιμοποιώντας τα CustomXmlPart, CustomXmlProperty και SmartTag στο Aspose.Words FOSS για .NET.


Οδηγός βήμα προς βήμα

Βήμα 1: Ανάγνωση προσαρμοσμένων δεδομένων XML από ένα έγγραφο

Document.CustomXmlParts επιστρέφει ένα CustomXmlPartCollection — ο ίδιος μηχανισμός που χρησιμοποιεί το Word για την υποστήριξη ελέγχων περιεχομένου που αντιστοιχούν σε XML. Επαναλάβετε τη συλλογή ή καλέστε το GetById(id) όταν ήδη γνωρίζετε ποιο τμήμα χρειάζεστε, για να λάβετε ένα CustomXmlPart. Κάθε τμήμα αποκαλύπτει το Id, έναν Data πίνακα byte που περιέχει το ακατέργαστο XML, ένα DataChecksum για τον εντοπισμό εάν τα δεδομένα έχουν αλλάξει χωρίς πλήρη σύγκριση byte, και το Schemas — ένα CustomXmlSchemaCollection που απαριθμεί τα σχήματα XML που σχετίζονται με αυτό.


Βήμα 2: Προσθήκη ή ενημέρωση προσαρμοσμένου τμήματος XML

Καλέστε CustomXmlPartCollection.Add(id, xml) με μια συμβολοσειρά id και το περιεχόμενο XML για να δημιουργήσετε ένα μέρος άμεσα, ή δημιουργήστε ένα CustomXmlPart ξεχωριστά και περάστε το στο Add(part). Για να αφαιρέσετε δεδομένα, χρησιμοποιήστε RemoveAt(index) σε συγκεκριμένη θέση ή Clear() για να αφαιρέσετε κάθε μέρος. Όταν αντιγράφετε προσαρμοσμένα δεδομένα XML μεταξύ εγγράφων, χρησιμοποιήστε CustomXmlPart.Clone() (ή το Clone() της συλλογής) στο πηγαίο μέρος αντί να ξαναδιαβάσετε και να προσθέσετε ξανά το ακατέργαστο XML, μετά προσθέστε το κλώνο στο Document.CustomXmlParts του στοχευμένου εγγράφου.


Βήμα 3: Διαχειριστείτε τα Σχήματα που Σχετίζονται με ένα Μέρος

CustomXmlPart.Schemas φθάνει σε ένα CustomXmlSchemaCollection, το οποίο παρακολουθεί τις URI σχήματος που σχετίζονται με το μέρος ως απλές συμβολοσειρές αντί για αναλυτικά αντικείμενα σχήματος. Χρησιμοποιήστε Add(value) για να καταχωρήσετε μια URI σχήματος, Remove(name) ή RemoveAt(index) για να αφαιρέσετε μία, IndexOf(value) για να εντοπίσετε μία, και Clear() για να τις αφαιρέσετε όλες. Count αναφέρει πόσες URI σχήματος είναι αυτή τη στιγμή συνδεδεμένες με το μέρος.


Βήμα 4: Εργαστείτε με Προσαρμοσμένα Μέρη Επιπέδου Πακέτου

Δεν κάθε μη ορατό μέρος σε ένα πακέτο OOXML είναι προσαρμοσμένο XML. Το Document.PackageCustomParts επιστρέφει ένα CustomPartCollection από αντικείμενα CustomPart — αυθαίρετα μέρη που αποθηκεύονται στο πακέτο, όπως μέρη που προστέθηκαν από άλλη εφαρμογή που επηρέασε το αρχείο. Κάθε CustomPart έχει ένα Name, ContentType, RelationshipType, έναν πίνακα byte Data και μια σημαία IsExternal που υποδεικνύει αν είναι εξωτερική αναφορά αντί για ενσωματωμένο περιεχόμενο. Τα Add(part), RemoveAt(index) και Clear() διαχειρίζονται τη συλλογή με τον ίδιο τρόπο όπως το CustomXmlPartCollection. Ελέγξτε το PackageCustomParts — όχι το CustomXmlParts — όταν ένα μέρος που το έγγραφό σας πρέπει να περιλαμβάνει δεν εμφανίζεται στη συλλογή προσαρμοσμένων XML.


Βήμα 5: Επιθεωρήστε τις Παλαιότερες Έξυπνες Ετικέτες και τις Ιδιότητές τους

SmartTag είναι ένας τύπος κόμβου (NodeType.SmartTag, κατασκευασμένος με SmartTag(doc)) που αντιπροσωπεύει μια παλαιότερη έξυπνη ετικέτα Word τυλιγμένη γύρω από αναγνωρισμένο κείμενο. Ελέγξτε τα Element και Uri μαζί για να προσδιορίσετε ποιος αναγνωριστής δημιούργησε την ετικέτα, στη συνέχεια διαβάστε το Properties — ένα CustomXmlPropertyCollection — για τα δομημένα δεδομένα που προσάρτησε ο αναγνωριστής. Μέσα σε ένα CustomXmlPropertyCollection, ο ευρετήριο (π.χ. properties["MyProp"]) ή το Contains(name) αναζητούν μια συγκεκριμένη ιδιότητα, το IndexOfKey(name) επιστρέφει τη θέση της, και τα Remove(name)/RemoveAt(index)/Clear() αφαιρούν τις εγγραφές· κάθε CustomXmlProperty κατασκευάζεται με CustomXmlProperty(name, uri, value) και εκθέτει τα Name, Uri και Value. Επειδή το SmartTag προέρχεται από το CompositeNode, συμμετέχει επίσης στο δέντρο του εγγράφου όπως άλλοι κόμβοι, υποστηρίζοντας τα Accept(visitor), AcceptStart(visitor) και AcceptEnd(visitor) για περιήγηση βασισμένη σε DocumentVisitor.


Κοινά Προβλήματα και Διορθώσεις

CustomXmlPartCollection.GetById(id) δεν επιστρέφει τίποτα χρήσιμο. Το id δεν ταιριάζει με κανένα τμήμα που υπάρχει αυτή τη στιγμή στο Document.CustomXmlParts. Καταμετρήστε τη συλλογή για να επιβεβαιώσετε ότι το id είναι παρόν, ή προσθέστε το τμήμα πρώτα με Add(id, xml).

Ένα τμήμα που προστέθηκε από άλλη εφαρμογή δεν εντοπίζεται μέσω επανάληψης CustomXmlParts. Τα μη-XML μέρη του πακέτου εκτίθενται μέσω Document.PackageCustomParts, όχι CustomXmlParts. Ελέγξτε PackageCustomParts (α CustomPartCollection) αντί αυτού.

SmartTag.Properties είναι κενό παρόλο που η ετικέτα είναι σαφώς παρούσα. Δεν κάθε αναγνωριστής έξυπνων ετικετών προσθέτει δομημένες ιδιότητες. Ελέγξτε SmartTag.Element and Uri για να επιβεβαιώσετε ποιος αναγνωριστής δημιούργησε την ετικέτα πριν υποθέσετε ότι θα υπάρχουν συγκεκριμένες ιδιότητες.

Τα προσαρμοσμένα δεδομένα XML δεν φαίνεται να σχετίζονται με τον έλεγχο περιεχομένου στον οποίο θα έπρεπε να είναι δεσμευμένα. Οι έλεγχοι περιεχομένου δεσμεύονται σε προσαρμοσμένα XML μέσω της δικής τους διαμόρφωσης δεσμεύσεων δεδομένων, όχι αυτόματα σε κάθε CustomXmlPart in Document.CustomXmlParts. Επιβεβαιώστε ποιο μέρος ενός δεδομένου ελέγχου περιεχομένου είναι πράγματι δεσμευμένο, αντί να υποθέτετε μια σχέση ένας-προς-έναν.


Συχνές Ερωτήσεις

Πώς μπορώ να προσθέσω προσαρμοσμένα δεδομένα XML σε ένα έγγραφο;

Κλήστε το Document.CustomXmlParts.Add(id, xml) με μια συμβολοσειρά id και περιεχόμενο XML, ή δημιουργήστε ένα CustomXmlPart ξεχωριστά και περάστε το στο Add(part).

Ποια είναι η διαφορά μεταξύ CustomXmlPart και CustomXmlProperty;

CustomXmlPart είναι ένα ολόκληρο νησί δεδομένων XML — ένα φορτίο byte-array μαζί με τα συναφή σχήματα — που προέρχεται μέσω Document.CustomXmlParts. CustomXmlProperty είναι ένα μοναδικό ζεύγος όνομα/τιμή, που συνήθως προσεγγίζεται μέσω SmartTag.Properties αντί για άμεση πρόσβαση από το έγγραφο.

Πώς αντιγράφω προσαρμοσμένα δεδομένα XML από ένα έγγραφο σε άλλο;

Καλέστε Clone() στην πηγαία CustomXmlPart, έπειτα προσθέστε το αντίγραφο στο Document.CustomXmlParts του στοχευμένου εγγράφου με Add(part).

Τι είναι ένα SmartTag και πότε θα συναντήσω ένα;

SmartTag είναι μια παλαιότερη λειτουργία του Word που αντιπροσωπεύει κείμενο που αναγνωρίζεται και τυλίγεται από έναν αναγνωριστή έξυπνων ετικετών — έναν κόμβο εγγράφου (NodeType.SmartTag) με ένα Element και Uri που ταυτοποιούν τον αναγνωριστή, συν μια συλλογή Properties από τιμές CustomXmlProperty. Εμφανίζεται σε έγγραφα που δημιουργήθηκαν ή επεξεργάστηκαν με ενεργές έξυπνες ετικέτες στις παλαιότερες εκδόσεις του Word.

Πώς μπορώ να γνωρίζω πόσα προσαρμοσμένα τμήματα XML ή τμήματα πακέτου έχει ένα έγγραφο;

Διαβάστε το Count στο Document.CustomXmlParts (ένα CustomXmlPartCollection) ή το Document.PackageCustomParts (ένα CustomPartCollection) αντίστοιχα.


Δείτε επίσης

 Ελληνικά