如何在lxml中编写xml doc的开头?

时间:2015-02-11 10:35:56

标签: python xml lxml cxml

我正在使用lxml写出一个cXML文件,但我无法弄清楚如何写出开头<?xml version="1.0" encoding="UTF-8"?>以及跟随它的doctype。当我开始这个时,我开始直接进入文档本身,第一个元素是cXML timestamp="2015-02-01'T'12:00:00Z">',依此类推。现在我意识到我可能因为没有开始标记和doctype定义而得到解析错误,但我不知道如何让lxml如何写出来。

1 个答案:

答案 0 :(得分:2)

您可以将它们作为参数传递给tostring()方法。一个例子:

from lxml import etree

root = etree.Element('root')
etree.SubElement(root, 'child1')
etree.SubElement(root, 'child2')

print etree.tostring(root, encoding='UTF-8', xml_declaration=True, doctype='''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">''')

产量:

<?xml version='1.0' encoding='UTF-8'?>                                                                           
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"                                                                                                                                                                                                                       
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">                                                                                                                                                                                                                   
<root><child1/><child2/></root>