python创建和解析xml文件
来源:互联网 发布:节假日堵车数据 编辑:程序博客网 时间:2024/06/13 16:00
创建一个xml文档:
'''
Created on 2012-1-10
Create a xml document
@author: xiaojay
'''
from
xml.dom
import
minidom
doc
=
minidom.Document()
doc.appendChild(doc.createComment(
"This is a simple xml."
))
booklist
=
doc.createElement(
"booklist"
)
doc.appendChild(booklist)
def
addBook(newbook):
book
=
doc.createElement(
"book"
)
book.setAttribute(
"id"
, newbook[
"id"
])
title
=
doc.createElement(
"title"
)
title.appendChild(doc.createTextNode(newbook[
"title"
]))
book.appendChild(title)
author
=
doc.createElement(
"author"
)
name
=
doc.createElement(
"name"
)
firstname
=
doc.createElement(
"firstname"
)
firstname.appendChild(doc.createTextNode(newbook[
"firstname"
]))
lastname
=
doc.createElement(
"lastname"
)
lastname.appendChild(doc.createTextNode(newbook[
"lastname"
]))
name.appendChild(firstname)
name.appendChild(lastname)
author.appendChild(name)
book.appendChild(author)
pubdate
=
doc.createElement(
"pubdate"
)
pubdate.appendChild(doc.createTextNode(newbook[
"pubdate"
]))
book.appendChild(pubdate)
booklist.appendChild(book)
addBook({
"id"
:
"1001"
,
"title"
:
"An apple"
,
"firstname"
:
"Peter"
,
"lastname"
:
"Zhang"
,
"pubdate"
:
"2012-1-12"
})
addBook({
"id"
:
"1002"
,
"title"
:
"Love"
,
"firstname"
:
"Mike"
,
"lastname"
:
"Li"
,
"pubdate"
:
"2012-1-10"
})
addBook({
"id"
:
"1003"
,
"title"
:
"Steve.Jobs"
,
"firstname"
:
"Tom"
,
"lastname"
:
"Wang"
,
"pubdate"
:
"2012-1-19"
})
addBook({
"id"
:
"1004"
,
"title"
:
"Harry Potter"
,
"firstname"
:
"Peter"
,
"lastname"
:
"Chen"
,
"pubdate"
:
"2012-11-11"
})
f
=
file
(
"book.xml"
,
"w"
)
doc.writexml(f)
f.close()
通过doc.toprettyxml(indent, newl, encoding)方法可以优雅显示xml文档,但是要避免直接写入文本,否则会给解析带来麻烦,尽量使用自带的writexml方法。
生成的文档内容:
<?xml version="1.0" ?>
<!--This is a simple xml.-->
<booklist>
<book id="1001">
<title>
An apple
</title>
<author>
<name>
<firstname>
Peter
</firstname>
<lastname>
Zhang
</lastname>
</name>
</author>
<pubdate>
2012-1-12
</pubdate>
</book>.................
</booklist>
解析该xml文档:
'''
Created on 2012-1-10
Scan a xml doc
@author: xiaojay
'''
from
xml.dom
import
minidom , Node
class
bookscanner:
def
__init__(
self
,doc):
for
child
in
doc.childNodes :
if
child.nodeType
=
=
Node.ELEMENT_NODE \
and
child.tagName
=
=
"book"
:
bookid
=
child.getAttribute(
"id"
)
print
"*"
*
20
print
"Book id : "
, bookid
self
.handle_book(child)
def
handle_book(
self
,node):
for
child
in
node.childNodes :
if
child.nodeType
=
=
Node.ELEMENT_NODE :
if
child.tagName
=
=
"title"
:
print
"Title : "
,
self
.getText(child.firstChild)
if
child.tagName
=
=
"author"
:
self
.handle_author(child)
if
child.tagName
=
=
"pubdate"
:
print
"Pubdate : "
,
self
.getText(child.firstChild)
def
getText(
self
,node):
if
node.nodeType
=
=
Node.TEXT_NODE :
return
node.nodeValue
else
:
return
""
def
handle_author(
self
,node):
author
=
node.firstChild
for
child
in
author.childNodes:
if
child.nodeType
=
=
Node.ELEMENT_NODE:
if
child.tagName
=
=
"firstname"
:
print
"Firstname : "
,
self
.getText(child.firstChild)
if
child.tagName
=
=
"lastname"
:
print
"Lastname : "
,
self
.getText(child.firstChild)
doc
=
minidom.parse(
"book.xml"
)
for
child
in
doc.childNodes :
if
child.nodeType
=
=
Node.COMMENT_NODE:
print
"Conment : "
, child.nodeValue
if
child.nodeType
=
=
Node.ELEMENT_NODE:
bookscanner(child)
输出结果:
Conment : This is a simple xml.
********************
Book id : 1001
Title : An apple
Firstname : Peter
Lastname : Zhang
Pubdate : 2012-1-12
********************
Book id : 1002
Title : Love
Firstname : Mike
Lastname : Li
Pubdate : 2012-1-10
********************
Book id : 1003
Title : Steve.Jobs
Firstname : Tom
Lastname : Wang
Pubdate : 2012-1-19
********************
Book id : 1004
Title : Harry Potter
Firstname : Peter
Lastname : Chen
Pubdate : 2012-11-11
- python创建和解析xml文件
- python创建和解析XML
- Dom4J解析XML和创建XML文件
- dom4J创建xml和解析xml文件
- 使用JDOM创建和解析XML文件
- xerces解析和创建xml文件
- 使用Dom4j解析和创建XML文件
- dom4j创建和解析xml文件实例
- 利用DOM解析和创建xml文件
- Android xml文件创建和pull解析
- 使用dom4j创建和解析xml文件
- Android Xml文件的解析和创建
- python解析xml(创建xml)
- 使用PHP DOM-XML创建和解析XML文件
- 使用PHP DOM-XML创建和解析XML文件
- [Dom解析]java创建和解析xml文件
- Python解析XML文件
- python 解析xml文件
- POJ2454--Jersey Politics
- 明明是有这个包的,但是导不进去
- 两个View 使用BLOCK传值
- android开发之修改全局自定义字体
- hdu3944(Lucas定理+预处理)
- python创建和解析xml文件
- GitHub上最火的74个Android开源项目
- Q5+maxim dl
- Beijing 2008 / UVa 1428 / POJ 3928 / HDU 2492 Ping pong (树状数组)
- Knockout.js随手记(7)
- php+mysql+apache环境配置(我配过一遍成功)
- Chapter 5, Django database layer
- linux修改文件权限和用户组管理小结
- 联通宽带我世界改为使用路由器多台电脑上网的配置