使用PYTHON创建XML文档

 更新时间:2012年03月01日 15:58:32   作者:  
今天想使用python来创建一个xml文件。找了下资料,发现资料不是很多,基本上都是使用python来解析xml文件的
当用GOOGLE查的时候,内容几乎都是一样的。但是你想要的东西,一个也没有。例如,我就找不到中国人写的如何使用PYTHON来创建一个XML文件。当然,直接用文件写的方式也能够达到同样的效果,但是毕竟容易出错,而且看起来不优雅。最后,我看了很多资料,终于明白如何使用PYTHON写一个XML文件了。以下就是一个简单的例子,这个例子是已经调试通过的,大家可以放心使用。
复制代码 代码如下:

import xml.dom.minidom
from xml.dom.DOMImplementation import implementation
import xml.sax.writer
import xml.utils

# Create a new document with no namespace uri, qualified name,
# or document type
document = implementation.createDocument(None,None,None)
personnel = document.createElement("personnel")
personnel.setAttribute('number', '5')
document.appendChild(personnel)
sexnode = document.createElement("sex")
sexnode.appendChild(document.createTextNode("male"))

namenode = document.createElement("name")
namenode.appendChild(document.createTextNode("tianbin"))

personnel.appendChild(sexnode)
personnel.appendChild(namenode)

out = open("tianbin.xml", "w")
xml.dom.ext.PrettyPrint(document,out)


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

<?xml version="1.0" encoding="utf-8"?>
<root>
<book isbn="34909023">
<author>
dikatour
</author>
</book>
</root>

写入到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内容的编码。除了第一个参数是必须的,其他参数都是可选择的。
最终代码如下(这个程序没什么价值,只是用来测试验证自己的想法,你更可能定义一个简单类或函数,将你的数据结构序列化到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..

相关文章

  • Django 前后台的数据传递的方法

    Django 前后台的数据传递的方法

    本篇文章主要介绍了Django 前后台的数据传递的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 解决ImportError:DLL load failed while importing win32api:找不到指定的模块

    解决ImportError:DLL load failed while impo

    在安装pywin32后,可能会出现无法导入win32api的错误,一个有效的解决方案是运行pywin32_postinstall.py脚本,首先,打开cmd并切换到环境的Scripts文件夹,确保存在pywin32_postinstall.py文件
    2024-09-09
  • Python装饰器基础概念与用法详解

    Python装饰器基础概念与用法详解

    这篇文章主要介绍了Python装饰器基础概念与用法,结合实例形式详细分析了Python装饰器的概念、功能、用法及相关操作注意事项,需要的朋友可以参考下
    2018-12-12
  • 利用rest framework搭建Django API过程解析

    利用rest framework搭建Django API过程解析

    这篇文章主要介绍了利用rest framework搭建Django API过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python爬取B站关注列表及数据库的设计与操作

    python爬取B站关注列表及数据库的设计与操作

    这篇文章主要为大家介绍了python爬取B站关注列表及数据库的设计与操作,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python处理缺失值的8种不同方法实例

    Python处理缺失值的8种不同方法实例

    缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类、分组、删失或截断,下面这篇文章主要给大家介绍了关于Python处理缺失值的8种不同方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • python自定义解析简单xml格式文件的方法

    python自定义解析简单xml格式文件的方法

    这篇文章主要介绍了python自定义解析简单xml格式文件的方法,涉及Python解析XML文件的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • python实现马丁策略回测3000只股票的实例代码

    python实现马丁策略回测3000只股票的实例代码

    这篇文章主要介绍了python实现马丁策略回测3000只股票,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • python对raw格式照片进行降噪处理的方法详解

    python对raw格式照片进行降噪处理的方法详解

    要对RAW格式的照片进行降噪,我们可以使用rawpy库来读取RAW图像,并使用imageio库将处理后的图像保存为其他格式,如PNG或JPEG,本文将详细给大家介绍python如何对raw格式照片进行降噪处理,文中有详细的代码流程,需要的朋友可以参考下
    2023-05-05
  • python爬虫URL重试机制的实现方法(python2.7以及python3.5)

    python爬虫URL重试机制的实现方法(python2.7以及python3.5)

    今天小编就为大家分享一篇python爬虫URL重试机制的实现方法(python2.7以及python3.5),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12

最新评论