Python中创建xml文件

有一次,需要一份xml格式的输出,之前的这个输出是由PHP来完成的。后来因为某个原因,需要在Python的程序中也做一样的事情。于是就有了下面的这个例子。


# -*- 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 = '5'
    interface_version = etree.SubElement(data, 'interface_version')
    interface_version.text = interface_version_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' % '222'

    dataxml = etree.tostring(data, pretty_print=True, encoding="UTF-8", method="xml", xml_declaration=True, standalone=None)
    print dataxml


if __name__ == '__main__':
    create_xml()


这段代码的输出 是这样子的

<?xml version='1.0' encoding='UTF-8'?>
<data>
  <interface_version>5</interface_version>
  <app>
    <title><![CDATA[真心话大冒险]]></title>
    <appid>222</appid>
  </app>
</data>


这段程序也相当的简单,我当时苦于不能输出CDATA区域。 后来发现etree中有这个方法。


其中data = etree.Element("data")是xml的起点,参数就是最外面标签的值,返回一个对象实例。


当需要扩展子标签时候用etree.SubElement()这个方法。它有两个参数,第一个参数相当于是父亲,第二个参数相当于是儿子。

这样一直可以用这个方法扩展下去。


创建有中文的 CDATA区域 用 title_txt = etree.CDATA(title_txt) 这个方法。 就像例子中的“真心话大冒险”那样添加。

相关文章
相关标签/搜索