Python中移除etree.fromstring生成的XML根元素问题
解决lxml移除XML根元素并输出子元素内容的问题
你遇到的问题是因为getchildren()返回的是元素列表,而etree.tostring()只能接收单个_Element对象,直接传递列表会触发类型错误。要输出根元素的所有子元素内容,你可以遍历根的子元素,逐个序列化后拼接起来。
正确实现代码
from lxml import etree content = "<data> <element_1>element-1</element_1> <element_2>element-2</element_2> </data>" # 解析带根元素的XML root = etree.fromstring(content) # 遍历根的所有子元素,逐个转为字符串后拼接 output = ''.join([etree.tostring(child, encoding='unicode') for child in root]) print(output)
代码说明
- 遍历子元素:直接遍历根元素
root即可获取所有子元素(getchildren()在lxml新版本中已被标记为过时,推荐直接迭代根元素)。 - 序列化单个元素:对每个子元素调用
etree.tostring(),指定encoding='unicode'可直接返回字符串;若需要字节流可去掉该参数。 - 拼接结果:用
join()将所有子元素的XML字符串拼接成最终输出。
输出结果
<element_1>element-1</element_1> <element_2>element-2</element_2>
内容的提问来源于stack exchange,提问作者tTt
相关产品推荐
相关产品推荐

