Εργασία με Προσαρμοσμένο XML Markup

Εργασία με Προσαρμοσμένο XML Markup

Εργασία με Προσαρμοσμένο XML Markup

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


Προσαρμοσμένα XML Parts

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

Προσαρμοσμένα XML Schemas

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

Προσαρμοσμένες XML Properties

Ξεχωριστά από CustomXmlPart, το CustomXmlProperty αντιπροσωπεύει μια μοναδική ιδιότητα XML όνομα/τιμή, κατασκευασμένη με CustomXmlProperty(name, uri, value) και εκθέτει τα Name, Uri και Value. Το CustomXmlPropertyCollection διαχειρίζεται ένα σύνολο από αυτά: το Add(property) προσθέτει ένα, ο δείκτης (π.χ. properties["MyProp"]) αναζητά ένα με βάση το όνομα και το Contains(name) ελέγχει αν υπάρχει, το IndexOfKey(name) επιστρέφει τη θέση του, και τα Remove(name)/RemoveAt(index)/Clear() αφαιρούν καταχωρήσεις. Το SmartTag.Properties επιστρέφει ένα CustomXmlPropertyCollection, που είναι ο τρόπος με τον οποίο αντιπροσωπεύονται τα δομημένα δεδομένα μιας παλαιάς έξυπνης ετικέτας (δείτε παρακάτω).

Προσαρμοσμένα Τμήματα Σε Επίπεδο Πακέτου

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

Παλαιές Έξυπνες Ετικέτες

SmartTag είναι ένας τύπος κόμβου (NodeType.SmartTag) που αντιπροσωπεύει μια παλαιά έξυπνη ετικέτα Word τυλιγμένη γύρω από αναγνωρισμένο κείμενο. Ένα SmartTag κατασκευάζεται με SmartTag(doc) και εκθέτει το Element (το όνομα του στοιχείου του αναγνώστη) και το Uri (το namespace του αναγνώστη), μαζί με το Properties — ένα CustomXmlPropertyCollection που κρατά τα δομημένα δεδομένα που ο αναγνώστης πρόσθεσε στο επισημασμένο κείμενο. Επειδή το SmartTag είναι κόμβος, συμμετέχει επίσης στο δέντρο του εγγράφου όπως και άλλοι κόμβοι, υποστηρίζοντας τα Accept(visitor), AcceptStart(visitor) και AcceptEnd(visitor) για περιήγηση βάσει DocumentVisitor.

MarkupLevel

MarkupLevel είναι ένα enum — Unknown, Inline, Block, Row, Cell — που περιγράφει το δομικό επίπεδο στο δέντρο του εγγράφου όπου μπορεί να εμφανιστεί ένα στοιχείο σήμανσης όπως μια δομημένη ετικέτα εγγράφου.


Συμβουλές και Καλές Πρακτικές

  • Χρησιμοποιήστε το CustomXmlPartCollection.GetById(id) αντί να επαναλαμβάνετε τη συλλογή χειροκίνητα όταν γνωρίζετε το αναγνωριστικό του τμήματος που χρειάζεστε.
  • Διαβάστε το CustomXmlPart.DataChecksum για να εντοπίσετε αν τα υποκείμενα δεδομένα XML έχουν αλλάξει χωρίς να κάνετε πλήρη σύγκριση byte.
  • Διακρίνετε το Document.CustomXmlParts (προσαρμοσμένα δεδομένα XML, συχνά δεσμευμένα σε ελέγχους περιεχομένου) από το Document.PackageCustomParts (αυθαίρετα τμήματα πακέτου που δεν είναι XML) — εξυπηρετούν διαφορετικούς σκοπούς και αποθηκεύονται ξεχωριστά.
  • Κατά την εργασία με παλαιά έγγραφα που χρησιμοποιούν έξυπνες ετικέτες, ελέγξτε τα SmartTag.Element και Uri μαζί για να εντοπίσετε ποιος αναγνωριστής δημιούργησε την ετικέτα πριν βασιστείτε στο Properties της.
  • Κλωνοποιήστε τα προσαρμοσμένα τμήματα XML με το CustomXmlPart.Clone() (ή το Clone() της συλλογής) όταν αντιγράφετε δεδομένα μεταξύ εγγράφων, αντί να διαβάζετε ξανά και να προσθέτετε τα ακατέργαστα XML.

Κοινά Προβλήματα

ΠρόβλημαΑιτίαΔιόρθωση
CustomXmlPartCollection.GetById(id) δεν επιστρέφει τίποτα χρήσιμοΤο αναγνωριστικό δεν ταιριάζει με κανένα μέρος που υπάρχει τώρα στο Document.CustomXmlPartsΑπαριθμήστε τη συλλογή για να επιβεβαιώσετε το αναγνωριστικό ή προσθέστε το μέρος πρώτα με το Add(id, xml)
Τα προσαρμοσμένα δεδομένα XML φαίνονται άσχετα με τα ορατά στοιχεία ελέγχου περιεχομένουΤα στοιχεία ελέγχου περιεχομένου συνδέονται με τα προσαρμοσμένα XML μέσω της δικής τους ρύθμισης δεσμεύσεων δεδομένων, όχι αυτόματα με κάθε CustomXmlPartΕπιβεβαιώστε σε ποιο τμήμα είναι δεσμευμένος ένας συγκεκριμένος έλεγχος περιεχομένου αντί να υποθέτετε μια σχέση 1:1 με το Document.CustomXmlParts
Ένα τμήμα πακέτου που προστέθηκε από άλλη εφαρμογή δεν βρίσκεται στο CustomXmlPartsΤα μη-XML τμήματα πακέτου εκτίθενται μέσω του Document.PackageCustomParts, όχι του CustomXmlPartsΕλέγξτε το PackageCustomParts (ένα CustomPartCollection) αντί
Το SmartTag.Properties είναι κενόΔεν κάθε αναγνωριστής έξυπνων ετικετών συνδέει δομημένες ιδιότητεςΕλέγξτε το SmartTag.Element/Uri για να επιβεβαιώσετε ποιος αναγνωριστής δημιούργησε την ετικέτα πριν αναμένετε συγκεκριμένες ιδιότητες

FAQ

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

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

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

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

Τι είναι τα προσαρμοσμένα μέρη πακέτου και πώς διαφέρουν από τα προσαρμοσμένα μέρη XML;

Document.PackageCustomParts (ένα CustomPartCollection από αντικείμενα CustomPart) περιέχει αυθαίρετα μέρη πακέτου OOXML που δεν είναι προσαρμοσμένα XML — το καθένα με ένα ContentType, RelationshipType, και ακατέργαστο Data. Document.CustomXmlParts προορίζεται ειδικά για νησιά δεδομένων προσαρμοσμένων XML.

Τι είναι ένα SmartTag;

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

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

Χρησιμοποιήστε το CustomXmlPart.Clone() στο τμήμα προέλευσης, έπειτα προσθέστε το κλώνο στο Document.CustomXmlParts του στόχου εγγράφου με Add(part).


Περίληψη API Reference

Κλάση/ΜέθοδοςΠεριγραφή
CustomXmlPartΈνα μοναδικό προσαρμοσμένο XML νησί δεδομένων συνδεδεμένο σε ένα έγγραφο
Document.CustomXmlPartsΤο CustomXmlPartCollection όλων των προσαρμοσμένων XML τμημάτων σε ένα έγγραφο
CustomXmlPartCollection.Add(id, xml) / GetById(id)Προσθήκη ή ανάκτηση προσαρμοσμένου XML τμήματος με id
CustomXmlSchemaCollectionURI σχήματος που σχετίζονται με ένα CustomXmlPart
CustomXmlPropertyΜία μοναδική ιδιότητα name/value XML
CustomXmlPropertyCollectionΜία συλλογή τιμών CustomXmlProperty, π.χ. στο SmartTag.Properties
Document.PackageCustomPartsΤο CustomPartCollection των αυθαίρετων μη-XML τμημάτων πακέτου OOXML
CustomPartΈνα προσαρμοσμένο τμήμα σε επίπεδο πακέτου με Name, ContentType και ακατέργαστο Data
SmartTagΠαλαιού τύπου κόμβος που περιβάλλει κείμενο που αναγνωρίζεται από έναν αναγνωριστή έξυπνων ετικετών
MarkupLevelEnum που περιγράφει πού μπορεί να εμφανιστεί ένα στοιχείο σήμανσης στο δέντρο του εγγράφου

Δείτε επίσης

 Ελληνικά