我想构建以下XML元素(以自定义图形编号格式):
<figcaption>
<span class="fignum">Figura 1.2</span> - Description of figure.
</figcaption>
但我不知道如何指定文字的位置.实际上,如果我在创建文本之前创建了子元素,
import lxml.etree as et
fc = et.Element("figcaption")
fn = et.SubElement(fc, "span", {'class':'fignum'})
fn.text = "Figure 1.2"
fc.text = " - Description of figure."
我得到了不想要的结果(文本位于子元素之前):
<figcaption>
- Description of figure.<span class="fignum">Figure 1.2</span>
</figcaption>
如何相对于子元素指定文本的位置?
解决方法:
您需要使用span元素的tail属性:
from lxml import etree as et
fc = et.Element("figcaption")
fn = et.SubElement(fc, "span", {'class':'fignum'})
fn.text = "Figure 1.2"
fn.tail = " - Description of figure."
print(et.tostring(fc))
06001
使用ElementTree时,元素在元素内部具有一个文本,在元素之后和外部具有尾部.
如果有多个孩子,则父文本是第一个孩子之前的文本,元素内的所有其他文本将分配给孩子的尾巴.
此问题的另一个答案中的一些示例已被删除:
<elem>.text of elem</elem>.tail of elem
<elem>.text of elem<child1/><child2/></elem>.tail of elem
<elem>.text of elem<child1/>.tail of child1<child2/>.tail of child2</elem>.tail of elem
<elem>.text of elem<child1>.text of child1</child1>.tail of child1<child2/>.tail of child2</elem>.tail of elem