python通过dom生成XML文档

第一步:创建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()


猜你喜欢

转载自blog.csdn.net/qq_32551117/article/details/79730909