如何在 lxml 中编写 xml 文档的开头?
how to write the opening of an xml doc in lxml?
我正在使用 lxml 写出一个 cXML 文件,但我不知道如何让它写出开头 <?xml version="1.0" encoding="UTF-8"?>
及其后的文档类型。当我开始这个时,我直接从文档本身开始,第一个元素是 cXML timestamp="2015-02-01'T'12:00:00Z">'
等等。现在我意识到我可能会遇到解析错误,因为没有开始标记和文档类型定义,但我不知道如何获取 lxml 如何将它们写出来。
您可以将它们作为参数传递给 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>
我正在使用 lxml 写出一个 cXML 文件,但我不知道如何让它写出开头 <?xml version="1.0" encoding="UTF-8"?>
及其后的文档类型。当我开始这个时,我直接从文档本身开始,第一个元素是 cXML timestamp="2015-02-01'T'12:00:00Z">'
等等。现在我意识到我可能会遇到解析错误,因为没有开始标记和文档类型定义,但我不知道如何获取 lxml 如何将它们写出来。
您可以将它们作为参数传递给 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>