2015-02-11 2 views
1

Я использую lxml для записи файла cXML, но не могу понять, как заставить его выписать открытие <?xml version="1.0" encoding="UTF-8"?> вместе с документом, следующим за ним. Когда я начал это, я начал прямо в самом документе, причем первый элемент был cXML timestamp="2015-02-01'T'12:00:00Z">' и так далее. Теперь я понимаю, что я, вероятно, получаю ошибки синтаксического анализа из-за отсутствия открывающих тегов и определения doctype, но я не знаю, как получить lxml, как их выписать.Как написать открытие XML-документа в lxml?

ответ

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> 
+0

работал отлично. Чтобы записать его в файл, я использовал это: 'treeStr = ET.tostring (topline, encoding =" UTF-8 ", xml_declaration = True, doctype = '' ' '' ') xmlFile = open (str (orderNumber) +" .xml ",' w ') xmlFile.write (treeStr)' – Bendustries

Смежные вопросы