2010-06-29 26 views
8

Tôi đang sử dụng ElementTree để tạo một số HTML, nhưng tôi đã gặp phải sự cố rằng ElementTree không lưu trữ văn bản dưới dạng Nút, nhưng là thuộc tính texttail của Element. Đây là một vấn đề nếu tôi muốn tạo ra một cái gì đó sẽ đòi hỏi nhiều nút văn bản, ví dụ:Nhiều nút văn bản trong ElementTree của Python? Tạo mã HTML

<a>text1 <b>text2</b> text3 <b>text4</b> text5</a> 

Theo như tôi có thể nói không có cách nào để tạo this- tôi thiếu cái gì? Hoặc, liệu có một giải pháp tốt hơn cho việc tạo HTML nhanh chóng và đơn giản trong Python?

Trả lời

11

Để tạo chuỗi ở trên với ElementTree, bạn có thể sử dụng mã sau. Bí quyết cho điều này là text là rất nhiều văn bản đầu tiên trước phần tử tiếp theo và tail là tất cả văn bản sau phần tử đến phần tử tiếp theo.

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> 
+0

"đuôi là tất cả văn bản sau phần tử đến phần tử tiếp theo". Ah, đó là những gì tôi đã không nhận ra. Cảm ơn! –

Các vấn đề liên quan