第一步:创建XML文档树
from xml.dom import minidom
doc=minidom.Document()#通过Document()方法生成一个Docment对象
print doc
结果:
<xml.dom.minidom.Document instance at 0x00000000026950C8>
第二部:创建节点和属性
创建标签节点:
from xml.dom import minidom
doc=minidom.Document()
booklist=doc.createElement('boolist')
print booklist
结果:
<DOM Element: boolist at 0x26c7448>
创建文本节点:
from xml.dom import minidom
doc=minidom.Document()
booklist=doc.createElement('boolist')
booklist_value=doc.createTextNode(u'书籍列表')
创建节点属性:
from xml.dom import minidom
doc=minidom.Document()
booklist=doc.createElement('boolist')
booklist.setAttribute('type',u'属性值')
print booklist.getAttribute('type')
结果:
属性值
第三步,建立节点与节点之间的关联关系
通过appendChild()方法将子节点加入父节点中
from xml.dom import minidom
doc=minidom.Document()
booklist=doc.createElement('boolist')
book1=doc.createElement('book')
book2=doc.createElement('book')
booklist.appendChild(book1)
booklist.appendChild(book2)
print booklist.childNodes
结果:
[<DOM Element: book at 0x25e9d48>, <DOM Element: book at 0x2618d48>]
第四部:生成xml文档
from xml.dom import minidom
doc=minidom.Document()
booklist=doc.createElement('boolist')
book1=doc.createElement('book')
book2=doc.createElement('book')
booklist.appendChild(book1)
booklist.appendChild(book2)
doc.appendChild(booklist)
import codecs
f=codecs.open(r'C:\Users\libai\Desktop\xml1\text4.xml','w','utf-8')
doc.writexml(f,indent=' ',addindent=' ',newl='\n',encoding='utf-8')
f.close()
生成的文档如下:
<?xml version="1.0" encoding="utf-8"?>
<boolist>
<book/>
<book/>
</boolist>
生成案例
要生成的xml文档:
<?xml version="1.0" encoding="utf-8"?>
<Managers address="科技软件园" company="xx科技">
<manager>
<age>27</age>
<name>joy</name>
<sex>女</sex>
</manager>
<manager>
<age>30</age>
<name>tom</name>
<sex>男</sex>
</manager>
<manager>
<age>29</age>
<name>ruby</name>
<sex>女</sex>
</manager>
</Managers>
python源码:
#coding=utf-8
managerList = [{'name' : 'joy', 'age' : 27, 'sex' : '女'},
{'name' : 'tom', 'age' : 30, 'sex' : '男'},
{'name' : 'ruby', 'age' : 29, 'sex' : '女'} ]
from xml.dom import minidom
doc=minidom.Document()
managers=doc.createElement('Managers')
managers.setAttribute('address',u'科技软件园')
managers.setAttribute('company',u'xx科技')
doc.appendChild(managers)
for i in range(3):
manager=doc.createElement('manager')
name=doc.createElement(managerList[i].keys()[0])
name.appendChild(doc.createTextNode(str(managerList[i].values()[0])))
age=doc.createElement(managerList[i].keys()[1])
age.appendChild(doc.createTextNode(managerList[i].values()[1]))
sex=doc.createElement(managerList[i].keys()[2])
sex.appendChild(doc.createTextNode((managerList[i].values()[2]).decode('utf-8')))
manager.appendChild(name)
manager.appendChild(age)
manager.appendChild(sex)
managers.appendChild(manager)
import codecs
f=codecs.open(r'C:\Users\libai\Desktop\xml1\text3.xml','w','utf-8')
doc.writexml(f,indent=' ',addindent=' ',newl='\n',encoding='utf-8')
f.close()