2016-09-01 4 views
1

Я тока с помощью ElementTree написать XML-файлКак написать объявление XML в файл XML?

for i in range(len(lang_list)): 
    body = ET.SubElement(root, "body") 
    body.set("lang", lang_list[i]) 
    # body.text = text_list[i] + " " + common_text 
    body.text =unescape(escape('<![CDATA[')) + text_list[i] + " " +  common_text + unescape(escape(']]>')) 
    body.tail = "\n\t" 

outpath = os.getcwd() 
file = outpath + "\\test.xml" 
tree.write(file, xml_declaration=True) 

но есть декларация XML, такие как

DOCTYPE электронный-шаблон PUBLIC «-// yourcompany, Inc.//DTD email-template // EN "" email-template.dtd ">

Как записать эту информацию в файл XML?

+0

Я написал ответ здесь, но вопрос был закрыт, прежде чем я представил его. Вы можете увидеть мой ответ [здесь] (https://gist.github.com/larsks/de0d32d3796609cd856da7b95e7e4808). – larsks

ответ

1

Одним из возможного (прагматическое) решения заменить Последнюю строку

tree.write(file, xml_declaration=True) 

с

with open(file, 'wb') as f: 
    f.write(b'<?xml version="1.0" encoding="UTF-8"?>'); 
    f.write(b'<!DOCTYPE email-template PUBLIC "-//yourcompany, Inc.//DTD email-template//EN" "email-template.dtd">') 
    tree.write(f, xml_declaration=False, encoding='utf-8') 
Смежные вопросы