سؤال

أنا أستخدم 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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top