2015-02-11 72 views
1

我正在使用lxml寫出一個cXML文件,但我不知道如何讓它寫出開頭<?xml version="1.0" encoding="UTF-8"?>以及其後的文檔類型。當我開始這個時,我直接開始閱讀文檔本身,第一個元素是cXML timestamp="2015-02-01'T'12:00:00Z">'等等。現在我意識到我可能因爲沒有開始標記和doctype定義而出現解析錯誤,但我不知道如何讓lxml如何寫出這些錯誤。如何在lxml中編寫一個xml文檔的開頭?

回答

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 ='''<!DOCTYPE cXML SYSTEM「http://xml.cXML (str(orderNumber)+「.xml」,'w') xmlFile.write(treeStr)'.org/schemas/cXML/1.2.011/InvoiceDetail.dtd「>''') xmlFile = – Bendustries 2015-02-15 05:49:27

相關問題