本文实例讲述了使用Python生成XML的方法。分享给大家供大家参考,具体如下:
1. bookstore.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#encoding:utf-8
'''
根据一个给定的XML Schema,使用DOM树的形式从空白文件生成一个XML。
'''
from xml.dom.minidom import Document
doc = Document() #创建DOM文档对象
bookstore = doc.createElement( 'bookstore' ) #创建根元素
bookstore.setAttribute( 'xmlns:xsi' , "http://www.w3.org/2001/XMLSchema-instance" ) #设置命名空间
bookstore.setAttribute( 'xsi:noNamespaceSchemaLocation' , 'bookstore.xsd' ) #引用本地XML Schema
doc.appendChild(bookstore)
############book:Python处理XML之Minidom################
book = doc.createElement( 'book' )
book.setAttribute( 'genre' , 'XML' )
bookstore.appendChild(book)
title = doc.createElement( 'title' )
title_text = doc.createTextNode( 'Python处理XML之Minidom' ) #元素内容写入
title.appendChild(title_text)
book.appendChild(title)
author = doc.createElement( 'author' )
book.appendChild(author)
author_first_name = doc.createElement( 'first-name' )
author_last_name = doc.createElement( 'last-name' )
author_first_name_text = doc.createTextNode( '张' )
author_last_name_text = doc.createTextNode( '三' )
author.appendChild(author_first_name)
author.appendChild(author_last_name)
author_first_name.appendChild(author_first_name_text)
author_last_name.appendChild(author_last_name_text)
book.appendChild(author)
price = doc.createElement( 'price' )
price_text = doc.createTextNode( '28' )
price.appendChild(price_text)
book.appendChild(price)
############book1:Python写网站之Django####################
book1 = doc.createElement( 'book' )
book1.setAttribute( 'genre' , 'Web' )
bookstore.appendChild(book1)
title1 = doc.createElement( 'title' )
title_text1 = doc.createTextNode( 'Python写网站之Django' )
title1.appendChild(title_text1)
book1.appendChild(title1)
author1 = doc.createElement( 'author' )
book.appendChild(author1)
author_first_name1 = doc.createElement( 'first-name' )
author_last_name1 = doc.createElement( 'last-name' )
author_first_name_text1 = doc.createTextNode( '李' )
author_last_name_text1 = doc.createTextNode( '四' )
author1.appendChild(author_first_name1)
author1.appendChild(author_last_name1)
author_first_name1.appendChild(author_first_name_text1)
author_last_name1.appendChild(author_last_name_text1)
book1.appendChild(author1)
price1 = doc.createElement( 'price' )
price_text1 = doc.createTextNode( '40' )
price1.appendChild(price_text1)
book1.appendChild(price1)
########### 将DOM对象doc写入文件
f = open ( 'bookstore.xml' , 'w' )
f.write(doc.toprettyxml(indent = ''))
f.close()
|
2. bookstore.xsd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<? xml version = "1.0" encoding = "utf-8" ?>
< xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema" elementFormDefault = "qualified" >
< xsd:element name = "bookstore" type = "bookstoreType" />
< xsd:complexType name = "bookstoreType" >
< xsd:sequence maxOccurs = "unbounded" >
< xsd:element name = "book" type = "bookType" />
</ xsd:sequence >
</ xsd:complexType >
< xsd:complexType name = "bookType" >
< xsd:sequence >
< xsd:element name = "title" type = "xsd:string" />
< xsd:element name = "author" type = "authorName" />
< xsd:element name = "price" type = "xsd:decimal" />
</ xsd:sequence >
< xsd:attribute name = "genre" type = "xsd:string" />
</ xsd:complexType >
< xsd:complexType name = "authorName" >
< xsd:sequence >
< xsd:element name = "first-name" type = "xsd:string" />
< xsd:element name = "last-name" type = "xsd:string" />
</ xsd:sequence >
</ xsd:complexType >
</ xsd:schema >
|
3. 根据上面的XML Schema用Python minidom生成的XML
bookstore.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
<? xml version = "1.0" ?>
< bookstore xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "bookstore.xsd" >
< book genre = "XML" >
< title >
Python处理XML之Minidom
</ title >
< author >
< first-name >
张
</ first-name >
< last-name >
三
</ last-name >
</ author >
< price >
28
</ price >
</ book >
< book genre = "Web" >
< title >
Python写网站之Django
</ title >
< author >
< first-name >
李
</ first-name >
< last-name >
四
</ last-name >
</ author >
< price >
40
</ price >
</ book >
</ bookstore >
|
希望本文所述对大家Python程序设计有所帮助。