Εργασία με το DOM
Εργασία με το DOM
Το επίπεδο DOM μοντελοποιεί μια HTML σελίδα ως ένα δέντρο από τύπους κόμβων. Document είναι το σημείο εισόδου και το εργοστάσιο κόμβων· Element και Node εκτελούν τη διαχείριση και την περιήγηση API.
Δημιουργία Κόμβων
Document.create_element(), create_text_node(), create_comment() και create_document_fragment() δημιουργούν κόμβους· append_child() τους συνδέει:
from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
doc.append_child(el)Attributes
Element.set_attribute(), get_attribute(), has_attribute() και remove_attribute() διαχειρίζονται τα γνωρίσματα σήμανσης· Attr και NamedNodeMap τα εκθέτουν ως αντικείμενα:
from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)Λειτουργίες Δέντρου
Node παρέχει το δομικό σύνολο εργαλείων: insert_before(), remove_child(), replace_child(), clone_node() και contains(), καθώς και τους child_nodes, parent_node και first_child προσπελάστριους και text_content για κείμενο υποδέντρου. Οι get_root_node() και has_child_nodes() απαντούν σε δομικές ερωτήσεις απευθείας.
Αναζήτηση και Διάσχιση
Document.get_element_by_id() ανακτά στοιχεία με βάση το id. Οι NodeList και HTMLCollection διατηρούν σύνολα αποτελεσμάτων· οι NodeIterator και TreeWalker (με NodeFilter) διασχίζουν τα υποδέντρα με τη σειρά του εγγράφου.
Παρακολούθηση Μεταβολών
MutationObserver καταγράφει τις αλλαγές του δέντρου ως καταχωρήσεις MutationRecord, αντικατοπτρίζοντας το πρότυπο παρατηρητή για την αντίδραση σε δομικές επεξεργασίες.
Συμβουλές και Καλύτερες Πρακτικές
- Δημιουργήστε κάθε κόμβο μέσω του ιδιοκτήτη
Document— οι κόμβοι είναι περιορισμένοι στο έγγραφο· χρησιμοποιήστεDocument.import_node()ήadopt_node()για να τους μετακινήσετε μεταξύ εγγράφων. - Προτιμήστε το
text_contentγια κείμενο ολόκληρου υποδέντρου αντί για χειροκίνητη διαχείριση κόμβωνText. - Χρησιμοποιήστε
DocumentFragmentγια να συναρμολογήσετε παρτίδες κόμβων πριν από ένα ενιαίοappend_child() - Ελέγξτε το
has_attribute()πριν από τοget_attribute()όταν ένα ελλιπές χαρακτηριστικό είναι σημαντικό
Συνηθισμένα προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
| Ο κόμβος εμφανίζεται στο λανθασμένο έγγραφο | Κόμβος δημιουργήθηκε από διαφορετικό Document | Μετακινήστε το με import_node() ή adopt_node() πρώτα |
| Η αναζήτηση ιδιότητας δεν επιστρέφει τίποτα | Η ιδιότητα δεν ορίστηκε ποτέ στο στοιχείο | Προστασία με has_attribute() |
| Το κείμενο του υποδέντρου είναι κενό | Ανάγνωση text_content πριν προσαρτηθούν τα παιδιά | Συνδέστε τα παιδιά, μετά διαβάστε |
FAQ
Ποια κλάση δημιουργεί νέα στοιχεία;
Document — η μέθοδος create_element() του είναι το εργοστάσιο για στοιχεία, με παρόμοιες μεθόδους για κείμενο, σχόλια και θραύσματα.
Πώς μπορώ να μετακινήσω ένα υποδέντρο μεταξύ δύο εγγράφων;
Χρησιμοποιήστε το Document.import_node() για αντιγραφή ή το adopt_node() για μεταφορά, στη συνέχεια συνδέστε με το append_child().
Υπάρχει κάποιος παρατηρητής API για αλλαγές στο δέντρο;
Ναι — MutationObserver παρέχει παρτίδες MutationRecord που περιγράφουν δομικές και χαρακτηριστικές αλλαγές.
API Reference Περίληψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
Document.create_element | Δημιουργήστε έναν κόμβο στοιχείου |
Document.get_element_by_id | Αναζήτηση στοιχείου με id |
Element.set_attribute | Ορίστε ένα χαρακτηριστικό σήμανσης |
Node.insert_before | Εισαγωγή κόμβου πριν από ένα παιδί αναφοράς |
Node.clone_node | Αντιγραφή κόμβου ή υποδένδρου |
MutationObserver | Παρακολούθηση μεταβολών δέντρου |
TreeWalker | Φιλτραρισμένη διάσχιση κατά σειρά εγγράφου |