عقد نص متعددة في Python's Elementtree؟ جيل HTML
-
01-10-2019 - |
سؤال
أنا أستخدم ElementTree لإنشاء بعض HTML ، لكنني واجهت المشكلة التي لا تخزنها ElementTree على أنها عقدة ، ولكن مثل text
و tail
خصائص Element
. هذه مشكلة إذا أردت إنشاء شيء يتطلب عقد نص متعددة ، على سبيل المثال:
<a>text1 <b>text2</b> text3 <b>text4</b> text5</a>
بقدر ما أستطيع أن أقول أنه لا توجد وسيلة لتوليد هذا- هل أفتقد شيئًا؟ أو ، هل هناك حل أفضل لتوليد HTML سريع وبسيط في بيثون؟
المحلول
لإنشاء السلسلة أعلاه مع ElementTree
يمكنك استخدام الكود التالي. الحيلة لهذا هو أن text
هو أول الكثير من النص قبل العنصر التالي و tail
هو كل النص بعد العنصر حتى العنصر التالي.
import xml.etree.ElementTree as ET
root = ET.Element("a")
root.text = 'text1 ' #First Text in the Element a
b = ET.SubElement(root, "b")
b.text = 'text2' #Text in the first b
b.tail = ' text3 ' #Text immediately after the first b but before the second
b = ET.SubElement(root, "b")
b.text = 'text4'
b.tail = ' text5'
print ET.tostring(root)
#This prints <a>text1 <b>text2</b> text3 <b>text4</b> text5</a>
لا تنتمي إلى StackOverflow