zoukankan      html  css  js  c++  java
  • 使用PYTHON创建XML文档_python

    当用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 = www.bsck.org("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" 

  • 相关阅读:
    protobuf 一个c++示例
    protobuf 之 MessageLite 接口摘录
    export setenv
    Centos java 安装
    C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
    centos 安装tkdiff
    Redis 入门指南
    VB.NET+三层 机房收费系统之组合查询
    Android studio 插件之 GsonFormat (自己主动生成javabean)
    ubuntu14.04恢复系统默认中文字体
  • 原文地址:https://www.cnblogs.com/tianshifu/p/6361812.html
Copyright © 2011-2022 走看看