python 解析XML,python解析xml,一 、xml.dom 解


一 、xml.dom 解析XML的API描述

minidom.parse(filename)

加载读取XML文件

doc.documentElement

获取XML文档对象

node.getAttribute(AttributeName)

获取XML节点属性值

node.getElementsByTagName(TagName)

获取XML节点对象集合

node.childNodes

返回子节点列表。

node.childNodes[index].nodeValue

获取XML节点值

node.firstChild

访问第一个节点。等价于pagexml.childNodes[0]

doc = minidom.parse(filename) doc.toxml('UTF-8')

返回Node节点的xml表示的文本

Node.attributes["id"]

a.name #就是上面的 "id" a.value #属性的值 访问元素属性

二、代码演示

1、创建user.xml文件,添加XMl节点

None

2、Demo.py解析user.xml文档数据

# -*- coding:utf-8 -*-"""* User: lhj588* Date: 11-11-9* Time: 13:20* Desc:""" from  xml.dom import  minidomdef get_attrvalue(node, attrname):     return node.getAttribute(attrname) if node else ''def get_nodevalue(node, index = 0):    return node.childNodes[index].nodeValue if node else ''def get_xmlnode(node,name):    return node.getElementsByTagName(name) if node else []def xml_to_string(filename='user.xml'):    doc = minidom.parse(filename)    return doc.toxml('UTF-8')def get_xml_data(filename='user.xml'):    doc = minidom.parse(filename)     root = doc.documentElement    user_nodes = get_xmlnode(root,'user')    user_list=[]    for node in user_nodes:         user_id = get_attrvalue(node,'id')         node_name = get_xmlnode(node,'username')        node_email = get_xmlnode(node,'email')        node_age = get_xmlnode(node,'age')        node_sex = get_xmlnode(node,'sex')        user_name =get_nodevalue(node_name[0]).encode('utf-8','ignore')        user_email = get_nodevalue(node_email[0]).encode('utf-8','ignore')         user_age = int(get_nodevalue(node_age[0]))        user_sex = get_nodevalue(node_sex[0]).encode('utf-8','ignore')         user = {}        user['id'] , user['username'] , user['email'] , user['age'] , user['sex'] = (            int(user_id), user_name , user_email , user_age , user_sex        )        user_list.append(user)    return user_listdef test_xmltostring():    print xml_to_string()def test_laod_xml():    user_list = get_xml_data()    for user in user_list :        #print user['sex']        print '-----------------------------------------------------'        if user:            user_str='编   号:%d\n用户名:%s\n性   别:%s\n年   龄:%s\n邮   箱:%s\n ' % (int(user['id']) , user['username'], user['sex'] , user['age'] , user['email'])            print user_str            print '====================================================='if __name__ == "__main__":    test_xmltostring()    test_laod_xml()

3,3、测试效果

A、测试toxml

demo.py中文件修改成
if __name__ == "__main__":    test_xmltostring()

查看打印结果:

None

B、测试解析xml

demo.py文件中修改成:

if name == "main": test_laod_xml()

执行打印结果:

None

评论关闭