python读xml文件生成.h头文件_PYTHON读写xml文件的方法

这篇博客介绍了如何使用Python的xml.dom.minidom模块生成XML文件,并展示了使用xml.etree.ElementTree进行XML文件读取和操作的基本方法。通过示例代码,详细解释了各个函数的使用,包括创建元素、添加属性、遍历节点等。
摘要由CSDN通过智能技术生成

要生成的xml文件格式如下:

[python]

sample xml thing

ma

xiaoju

Springs Widgets, Inc.

First

I think widgets are greate.You should buy lots of them forom

Spirngy Widgts, Inc

代码:

[python]

from xml.dom import minidom, Node

doc = minidom.Document()

doc.appendChild(doc.createComment("Simple xml document__chapter 8"))

#generate the book

book = doc.createElement('book')

doc.appendChild(book)

#the title

title = doc.createElement('title')

title.appendChild(doc.createTextNode("sample xml thing"))

book.appendChild(title)

#the author section

author = doc.createElement("author")

book.appendChild(author)

name = doc.createElement('name')

author.appendChild(name)

firstname = doc.createElement('first')

firstname.appendChild(doc.createTextNode("ma"))

name.appendChild(firstname)

lastname = doc.createElement('last')

name.appendChild(lastname)

lastname.appendChild(doc.createTextNode("xiaoju"))

affiliation = doc.createElement("affiliation")

affiliation.appendChild(doc.createTextNode("Springs Widgets, Inc."))

author.appendChild(affiliation)

#The chapter

chapter = doc.createElement('chapter')

chapter.setAttribute('number', '1')

title = doc.createElement('title')

title.appendChild(doc.createTextNode("First"))

chapter.appendChild(title)

book.appendChild(chapter)

para = doc.createElement('para')

para.appendChild(doc.createTextNode("I think widgets are greate.\

You should buy lots of them forom"))

company = doc.createElement('company')

company.appendChild(doc.createTextNode("Spirngy Widgts, Inc"))

para.appendChild(company)

chapter.appendChild(para)

print doc.toprettyxml()

以前用Python中的minidom写过生成XML文件的程序,现在需要读取XML文件中的内容了,首先想到的还是minidom模块.一番编写测试后,如愿掌握了其函数的使用方式,和AJAX中的DOM操作没什么区别.

以前就知道elementtree在处理XML文件时广受Python程序员的欢迎,也安装过elementtree的安装包,现在使用的Python2.5中已将其收录了.既然我要处理XML文件,当然也要学着使用更高效和易用的模块了.自己摸索了半天,除了有关名字空间的函数没有试用外,其它函数都试用过了.以后处理XML文件可以得心应手了。

下面是一个简单的例子,通过它可以知道各个函数的使用方法:

from xml.etree.ElementTree import ElementTree

from xml.etree.ElementTree import Element

from xml.etree.ElementTree import SubElement

from xml.etree.ElementTree import dump

from xml.etree.ElementTree import Comment

from xml.etree.ElementTree import tostring

'''

Potato Smasher

Smash Potatoes like never before.

'''

## Writing the content to xml document

book = ElementTree()

purchaseorder = Element('PurchaseOrder')

book._setroot(purchaseorder)

SubElement(purchaseorder, 'account', {'refnum' : "2390094"})

item = Element("item", {'sku' : '33-993933', 'qty' : '4'})

purchaseorder.append(item)

print item.items() # [('sku', '33-993933'), ('qty', '4')]

print item.attrib # {'sku': '33-993933', 'qty': '4'}

print item.get('sku') # 33-993933

SubElement(item, 'name').text = "Potato Smasher"

SubElement(item, 'description').text = "Smash Potatoes like never before."

#book.write('book.xml',"utf-8")

#print tostring(purchaseorder)

#import sys

#book.write(sys.stdout)

#dump(book)

## Displaying the content of the xml document

print purchaseorder.find('account')

print purchaseorder.find('account').get('refnum')

print purchaseorder.findall('account')[0].get('refnum')

print purchaseorder.find('item/name')

print purchaseorder.find('item/name').text

## How to use ElementTree([element,] [file])

## 1. From standard XML element, it becomes root element

print ElementTree(item).getroot().find('name').text

## 2. From XML file

print ElementTree(file='book.xml').getroot().find('item/description').text

## Create an iterator

for element in purchaseorder.getiterator():

print element.tag

## Get pretty look

def indent(elem, level=0):

i = "\n" + level*""

if len(elem):

if not elem.text or not elem.text.strip():

elem.text = i + ""

for e in elem:

indent(e, level+1)

if not e.tail or not e.tail.strip():

e.tail = i

if level and (not elem.tail or not elem.tail.strip()):

elem.tail = i

return elem

if __name__=="__main__":

dump(indent(purchaseorder))

book.write('book.xml',"utf-8")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值