Python lxml:在相对于子元素的给定位置插入文本

我想构建以下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
上一篇:对象解析


下一篇:python使用lxml和xpath解析html表上的特定数据