为什么etree.tostring()不适用于不同的方法?

时间:2015-06-25 19:32:23

标签: python xml xml.etree

我正在学习XML并尝试以下练习代码:

root = etree.XML('<html><head/><body><p>Hello<br/>World</p></body></html>')
etree.tostring(root, method='xml')
print(etree.tostring(root))
etree.tostring(root, method='html') 
print(etree.tostring(root))
etree.tostring(root, method='text') 
print(etree.tostring(root))

在练习中,它说如果我这样做,我应该为root获取3个不同格式的输出字符串:xml,html和text。但是,我只是获得3个XML格式的输出。

我在这里缺少什么?我应该进口一些东西吗?我怀疑是etree.XML分配部分出了什么问题,但正如我所说:我只是按照这里的指示行事。人们认为什么是错的?

1 个答案:

答案 0 :(得分:1)

tostring()调用的结果确实不同,但每次都会丢失,而您将打印相同的表达式三次。 (请注意tostring() 返回结果,修改其参数。)

如果您改为运行此脚本:

from lxml import etree

root = etree.XML('<html><head/><body><p>Hello<br/>World</p></body></html>')
print(etree.tostring(root, method='xml'))
print(etree.tostring(root, method='html'))
print(etree.tostring(root, method='text'))

你会得到你期望的输出:

<html><head/><body><p>Hello<br/>World</p></body></html>
<html><head></head><body><p>Hello<br>World</p></body></html>
HelloWorld