Εργασία με το 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Φιλτραρισμένη διάσχιση κατά σειρά εγγράφου

Δείτε επίσης

 Ελληνικά