كيفية العمل مع DOM في Python

كيفية العمل مع DOM في Python

Aspose.HTML FOSS لنماذج Python HTML كـ DOM قائم على المعايير: Document ينشئ العقد، Element يدير السمات، وNode يوفر عمليات الشجرة. هذا الدليل يبني شجرة صغيرة ويقرأ هيكلها مرة أخرى، باستخدام pip للتثبيت.

دليل خطوة بخطوة

الخطوة 1: تثبيت الحزمة

تثبيت الحزمة:

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

ثم أكد البيانات الوصفية للحزمة:

pip show aspose-html-foss

الخطوة 2: استيراد الفئات المطلوبة

from aspose_html.dom import Document

الخطوة 3: إنشاء مستند وعنصر

Document هو مصنع العقد؛ create_element() يُعيد عنصرًا جديدًا تُرفقه بـ append_child():

doc = Document()
el = doc.create_element("div")
doc.append_child(el)

الخطوة 4: تعيين السمات

set_attribute() يكتب سمات العلامة؛ الفئات والمعرفات تُدير مطابقة CSS لاحقًا:

el.set_attribute("class", "foo")
el.set_attribute("id", "bar")

الخطوة 5: قراءة البنية مرة أخرى

get_element_by_id() يسترجع العنصر، get_attribute() يُعيد سماته، وhas_child_nodes() يؤكد البنية:

found = doc.get_element_by_id("bar")
print(found.get_attribute("class"))
print(doc.has_child_nodes())

المشكلات الشائعة والحلول

البحث حسب المعرف لا يُعيد أي شيء. العنصر id يجب تعيين السمة قبل get_element_by_id() يتم استدعاؤه، ويجب أن يكون العنصر مرفقًا بشجرة المستند.

قراءات السمة تُعيد قيمًا غير متوقعة. get_attribute() يعيد ما تم تعيينه آخرًا بـ set_attribute(); تحقق من الأخطاء المطبعية في أسماء السمات — هي سلاسل نصية عادية.

العُقد التي تم إنشاؤها من مستند آخر تتصرف بشكل غير صحيح. العُقَد ذات نطاق مستند. أنشئها عبر نفس Document, أو انقلها باستخدام import_node()/adopt_node().

الأسئلة المتكررة

ما أنواع العُقَد التي يمكن لكائن Document إنشاؤها؟

العناصر، وعُقَد النص، والتعليقات، وقطعات المستند — عبر create_element()، create_text_node()، create_comment()، وcreate_document_fragment().

كيف يمكنني نقل أو إزالة العُقَد الموجودة؟

استخدم عمليات Node: insert_before()، remove_child()، replace_child()، وclone_node().

هل يمكنني تحليل الترميز الموجود بدلاً من بناء الأشجار يدوياً؟

نعم — HTMLDocument.parse() للصفحات وHTMLDocument.parse_fragment() للمقاطع تنتج نفس نوع الشجرة.

انظر أيضاً

 العربية