Python之XML創建

xml.dom.minidom模塊實現創建一個XML文檔。

創建XML的過程

1、內存數據產生 
2、產生xml內存對象(也就是DOM樹) 
3、產生根對象 
4、往根對象里加數據 
5、把xml內存對象寫到文件 
下面是一個創建xml文檔的簡單實例:

import xml.dom.minidom

#在內存中創建一個空的文檔
doc = xml.dom.minidom.Document() 
#創建一個根節點Managers對象
root = doc.createElement('Managers') 
#設置根節點的屬性
root.setAttribute('company', 'xx科技') 
root.setAttribute('address', '科技軟件園') 
#將根節點添加到文檔對象中
doc.appendChild(root) 

managerList = [{'name' : 'joy',  'age' : 27, 'sex' : '女'},
               {'name' : 'tom', 'age' : 30, 'sex' : '男'},
               {'name' : 'ruby', 'age' : 29, 'sex' : '女'}
]

for i in managerList :
  nodeManager = doc.createElement('Manager')
  nodeName = doc.createElement('name')
  #給葉子節點name設置一個文本節點,用於顯示文本內容
  nodeName.appendChild(doc.createTextNode(str(i['name'])))

  nodeAge = doc.createElement("age")
  nodeAge.appendChild(doc.createTextNode(str(i["age"])))

  nodeSex = doc.createElement("sex")
  nodeSex.appendChild(doc.createTextNode(str(i["sex"])))

  #將各葉子節點添加到父節點Manager中,
  #最後將Manager添加到根節點Managers中
  nodeManager.appendChild(nodeName)
  nodeManager.appendChild(nodeAge)
  nodeManager.appendChild(nodeSex)
  root.appendChild(nodeManager)
#開始寫xml文檔
fp = open('c:\\wcx\\Manager.xml', 'w')
doc.writexml(fp, indent='\t', addindent='\t', newl='\n', encoding="utf-8")

執行結果: 

<?xml version="1.0" encoding="utf-8"?>
    <Managers address="科技軟件園" company="xx科技">
        <Manager>
            <name>joy</name>
            <age>27</age>
            <sex>女</sex>
        </Manager>
        <Manager>
            <name>tom</name>
            <age>30</age>
            <sex>男</sex>
        </Manager>
        <Manager>
            <name>ruby</name>
            <age>29</age>
            <sex>女</sex>
        </Manager>
    </Managers>

用Python自帶的寫xml文檔的API去寫,比較方便,後期容易維護。如果直接用打開文件的方式,一行一行的去寫,比較費時,也難以維護。

xml.dom模塊創建xml的部分API

  • minidom.Document()

創建一個空白xml文檔樹對象。 
每個xml文檔都是一個Document對象,代表着內存中的DOM樹。

  • doc. createElement(tagName) 
    生成xml文檔節點。參數表示要生成節點的名稱。 
    如:(注意這裏使用的例子都來自於上面創建xml文檔的程序中,下同)
#創建一個根節點Managers對象
root = doc.createElement('Managers')
  • node.setAttribute(attname, value)

給節點添加屬性值對(Attribute)。 
參數說明: 
attname :屬性的名稱 
value :屬性的值 
如: 
設置根節點的屬性:

root.setAttribute('company', 'xx科技')
  • doc.createTextNode(data)

給葉子節點添加文本節點。如:

#給葉子節點name設置一個文本節點,用於顯示文本內容
  nodeName.appendChild(doc.createTextNode(str(i['name'])))
  • node.appendChild(node1)

將節點node1t添加到節點node下。如:

#將葉子節點nodeName添加到父節點nodeManager下
nodeManager.appendChild(nodeName)
  • doc. writexml()

函數原型:

writexml(writer, indent='', addindent='', newl='', encoding=None)

 將內存中xml文檔樹寫入文件中。 
參數說明: 
writer :要寫的目標文件的文件對象。 
indent 

fp = open('c:\\Manager.xml', 'w')
doc.writexml(fp, indent='', addindent='\t', newl='\n', encoding="utf-8")

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章