使用python来创建一个xml文件

 ----------------
----------------- as always, fuck "顶" button
-----------------

今天想使用python来创建一个xml文件。找了下资料,发现资料不是很多,基本上都是使用python来解析xml文件的。
比如我要将内容为

   
       
           
                dikatour
           

       

   


写入到xmlstuff.xml文件中去。
其实也很简单,基本原理如下:
我使用xml的DOM方式,先在内存中创建一个空的DOM树,然后不断增加我要的节点,最后形成我想要的DOM,最后输出到文件中去。

1.我使用xml.dom.minidom这个module来创建xml文件
from xml.dom import minidom
2. 每个xml文件都是一个Document对象,代表着内存中的DOM树
doc = minidom.Document()

3.有了空的DOM树后,我们在上面添加根节点
rootNode = doc.createElement("root")
doc.appendChild(rootNode) #注意python的library reference里说,createElement后并没有将节点对象加到DOM树上,需要自己手工加上

4.创建其它的节点

5.输出到xml文件中去
doc.writexml(f, "/t", "/t", "/n", "utf-8") #第一个参数f就是你的目标文件对象,第二个参数好像是和下面一个根节点的缩进排列格式,
第三个参数好像是其他节点与子节点的缩进排列格式,第四个参数制定了换行的格式(如果你填入" ",那就不换行了,所有的xml都缩在了一行上面 :) )
,第五个参数制定了xml内容的编码。除了第一个参数是必须的,其他参数都是可选择的。

最终代码如下(这个程序没什么价值,只是用来测试验证自己的想法,你更可能定义一个简单类或函数,将你的数据结构序列化到xml文件中):
from xml.dom import minidom
import traceback

try:
    f = open("xmlstuff.xml", "w")
   
    try:
        doc = minidom.Document()
       
        rootNode = doc.createElement("root")
        doc.appendChild(rootNode)
       
        bookNode = doc.createElement("book")
        bookNode.setAttribute("isbn", "34909023")
        rootNode.appendChild(bookNode)
       
        authorNode = doc.createElement("author")
        bookNode.appendChild(authorNode)
       
        authorTextNode = doc.createTextNode("dikatour")
        authorNode.appendChild(authorTextNode)
       
        doc.writexml(f, "/t", "/t", "/n", "utf-8")
    except:
        trackback.print_exc()
    finally:
        f.close()
       
except IOException:
    print "open file failed"


总结:
    1. 目标(将一串xml字符串写到文件中)=>得到一串xml字符串=>dom树(minidom中有toxml方法将DOM树的xml信息输出成字符串)
    2. 使用python 2.5 documentation(也就是安装python时一起安装的python手册)中的library reference中的第8章(structrued Markup Processing Tools),查阅手册很重要,另外查阅一些简明的python书籍

    3.多思考,逻辑清晰了,即时象我一样对如何使用python操纵xml一无所知,稍微查下资料也就可以完成功能了

    4. 恰好证明了python这门语言的强大的功能性 :)  gets job done..

你可能感兴趣的:(使用python来创建一个xml文件)