最近要用python生成一个xml格式的文件。因为有一些内容是中文,原来的xml文件中使用了CDATA 的部分。 而之前的python程序所用的库中没有 创建这个区域的方法。无奈研究了大半天。 最后用了 from lxml import etree 这个库的方法。 这里将可运行的 python程序分享出来。 供大家参考。 经过测试,这段代码是可以直接运行生成xml格式内容的。 网上参考的主要是 http://lxml.de/api/index.html 这个网页。
# -*- coding:utf-8 -*-
import sys
import time
import string from lxml import etree #设置默认字符集为UTF8 不然有些时候转码会出问题
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding) def create_xml(): data = etree.Element("data")
#1 interface_version
interface_version_txt = ''
interface_version = etree.SubElement(data, 'interface_version')
interface_version.text = interface_version_txt
#2 site
site_txt = 'www.xxx.com'
site = etree.SubElement(data, 'site')
site.text = site_txt
#3 lastmod
lastmod_txt = time.strftime('%Y-%m-%d', time.localtime())
lastmod = etree.SubElement(data, 'lastmod')
lastmod.text = lastmod_txt
#5 app
app = etree.SubElement(data, 'app')
#6 title
title_txt = u'%s' % '真心话大冒险'
title_txt = etree.CDATA(title_txt)
title = etree.SubElement(app, 'title')
title.text = title_txt
#7 appid
appid = etree.SubElement(app, 'appid')
appid.text = '%s' % '' dataxml = etree.tostring(data, pretty_print=True, encoding="UTF-8", method="xml", xml_declaration=True, standalone=None)
print dataxml if __name__ == '__main__':
create_xml()