使用PYTHON創(chuàng)建XML文檔
更新時間:2012年03月01日 15:58:32 作者:
今天想使用python來創(chuàng)建一個xml文件。找了下資料,發(fā)現(xiàn)資料不是很多,基本上都是使用python來解析xml文件的
當用GOOGLE查的時候,內容幾乎都是一樣的。但是你想要的東西,一個也沒有。例如,我就找不到中國人寫的如何使用PYTHON來創(chuàng)建一個XML文件。當然,直接用文件寫的方式也能夠達到同樣的效果,但是畢竟容易出錯,而且看起來不優(yōu)雅。最后,我看了很多資料,終于明白如何使用PYTHON寫一個XML文件了。以下就是一個簡單的例子,這個例子是已經(jīng)調試通過的,大家可以放心使用。
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來創(chuàng)建一個xml文件。找了下資料,發(fā)現(xiàn)資料不是很多,基本上都是使用python來解析xml文件的。
比如我要將內容為
<?xml version="1.0" encoding="utf-8"?>
<root>
<book isbn="34909023">
<author>
dikatour
</author>
</book>
</root>
寫入到xmlstuff.xml文件中去。
其實也很簡單,基本原理如下:
我使用xml的DOM方式,先在內存中創(chuàng)建一個空的DOM樹,然后不斷增加我要的節(jié)點,最后形成我想要的DOM,最后輸出到文件中去。
1.我使用xml.dom.minidom這個module來創(chuàng)建xml文件
from xml.dom import minidom
2. 每個xml文件都是一個Document對象,代表著內存中的DOM樹
doc = minidom.Document()
3.有了空的DOM樹后,我們在上面添加根節(jié)點
rootNode = doc.createElement("root")
doc.appendChild(rootNode) #注意python的library reference里說,createElement后并沒有將節(jié)點對象加到DOM樹上,需要自己手工加上
4.創(chuàng)建其它的節(jié)點
5.輸出到xml文件中去
doc.writexml(f, "/t", "/t", "/n", "utf-8") #第一個參數(shù)f就是你的目標文件對象,第二個參數(shù)好像是<?xml>和下面一個根節(jié)點的縮進排列格式,
第三個參數(shù)好像是其他節(jié)點與子節(jié)點的縮進排列格式,第四個參數(shù)制定了換行的格式(如果你填入" ",那就不換行了,所有的xml都縮在了一行上面 :) )
,第五個參數(shù)制定了xml內容的編碼。除了第一個參數(shù)是必須的,其他參數(shù)都是可選擇的。
最終代碼如下(這個程序沒什么價值,只是用來測試驗證自己的想法,你更可能定義一個簡單類或函數(shù),將你的數(shù)據(jù)結構序列化到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..
復制代碼 代碼如下:
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來創(chuàng)建一個xml文件。找了下資料,發(fā)現(xiàn)資料不是很多,基本上都是使用python來解析xml文件的。
比如我要將內容為
復制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<root>
<book isbn="34909023">
<author>
dikatour
</author>
</book>
</root>
寫入到xmlstuff.xml文件中去。
其實也很簡單,基本原理如下:
我使用xml的DOM方式,先在內存中創(chuàng)建一個空的DOM樹,然后不斷增加我要的節(jié)點,最后形成我想要的DOM,最后輸出到文件中去。
1.我使用xml.dom.minidom這個module來創(chuàng)建xml文件
from xml.dom import minidom
2. 每個xml文件都是一個Document對象,代表著內存中的DOM樹
doc = minidom.Document()
3.有了空的DOM樹后,我們在上面添加根節(jié)點
rootNode = doc.createElement("root")
doc.appendChild(rootNode) #注意python的library reference里說,createElement后并沒有將節(jié)點對象加到DOM樹上,需要自己手工加上
4.創(chuàng)建其它的節(jié)點
5.輸出到xml文件中去
doc.writexml(f, "/t", "/t", "/n", "utf-8") #第一個參數(shù)f就是你的目標文件對象,第二個參數(shù)好像是<?xml>和下面一個根節(jié)點的縮進排列格式,
第三個參數(shù)好像是其他節(jié)點與子節(jié)點的縮進排列格式,第四個參數(shù)制定了換行的格式(如果你填入" ",那就不換行了,所有的xml都縮在了一行上面 :) )
,第五個參數(shù)制定了xml內容的編碼。除了第一個參數(shù)是必須的,其他參數(shù)都是可選擇的。
最終代碼如下(這個程序沒什么價值,只是用來測試驗證自己的想法,你更可能定義一個簡單類或函數(shù),將你的數(shù)據(jù)結構序列化到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..
相關文章
解決ImportError:DLL load failed while impo
在安裝pywin32后,可能會出現(xiàn)無法導入win32api的錯誤,一個有效的解決方案是運行pywin32_postinstall.py腳本,首先,打開cmd并切換到環(huán)境的Scripts文件夾,確保存在pywin32_postinstall.py文件2024-09-09
利用rest framework搭建Django API過程解析
這篇文章主要介紹了利用rest framework搭建Django API過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08
python爬取B站關注列表及數(shù)據(jù)庫的設計與操作
這篇文章主要為大家介紹了python爬取B站關注列表及數(shù)據(jù)庫的設計與操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
python實現(xiàn)馬丁策略回測3000只股票的實例代碼
這篇文章主要介紹了python實現(xiàn)馬丁策略回測3000只股票,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
python爬蟲URL重試機制的實現(xiàn)方法(python2.7以及python3.5)
今天小編就為大家分享一篇python爬蟲URL重試機制的實現(xiàn)方法(python2.7以及python3.5),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12

