XML文件
<?xml version="1.0" encoding="UTF-8"?>
<info>
<intro>保存用户的信息</intro>
<list id='001'>
<head>auto_userone</head>
<name>Jordy</name>
<number>12345678</number>
<age>20</age>
<sex>男</sex>
<hobby>上彀</hobby>
</list>
<list id='002'>
<head>auto_usertwo</head>
<name>功夫</name>
<number>34443678</number>
<age>18</age>
<sex>男</sex>
<hobby>功夫</hobby>
</list>
</info>
用sax解析
from xml.dom import minidom
class praseXML:
def __init__(self):
self.dom = minidom.parse("data.xml")
self.root = self.dom.documentElement
self.elements = self.root.childNodes
for element in self.elements:
if element.nodeType is not element.TEXT_NODE:
if element.hasAttribute('id'):
print element.nodeName,'-->',element.getAttribute('id')
nodes = element.childNodes
for node in nodes:
if node.nodeType is not node.TEXT_NODE:
print node.nodeName,'-->',node.firstChild.nodeValue
def getTagByName(self,tagname):
nodes = self.root.getElementsByTagName(tagname)
return nodes
if __name__ == '__main__':
obj = praseXML()
nodes = obj.getTagByName('name')
for node in nodes:
print node.nodeName,'-->',node.firstChild.nodeValue
用etree解析
import xml.etree.ElementTree as ET
class parseXML:
def __init__(self):
self.filename = 'data.xml'
def load_xml_file(self):
root = ET.parse(self.filename).getroot()
print root.tag
intro = root.find('intro')
print intro.tag,'-->',intro.text
all_users = root.findall('list')
usermap = {}
count = 0
for user in all_users:
count += 1
head = user.find('head')
name = user.find('name')
sex = user.find('sex')
print sex.text
usermap[head.tag+str(count)] = head.text
usermap[name.tag+str(count)] = name.text
usermap[sex.tag+str(count)] = sex.text
return usermap
if __name__ == '__main__':
obj = parseXML()
usermap = obj.load_xml_file()
print usermap