加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python 解析XML

发布时间:2020-12-17 17:07:39 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 minidom.parse(filename) doc.documentElement node.getAttribute(AttributeName) node.getElementsByTagName(TagName) node.childNodes node.childNo

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

minidom.parse(filename)
doc.documentElement
node.getAttribute(AttributeName)
node.getElementsByTagName(TagName)
node.childNodes
node.childNodes[index].nodeValue
node.firstChild
doc?=?minidom.parse(filename)
?doc.toxml('UTF-8')
Node.attributes["id"]
<?xml?version="1.0"?encoding="UTF-8"??>
<users>
????<user?id="1000001">
????????<username>Admin</username>
????????<email>[email?protected]</email>
????????<age>23</age>
????????<sex>男</sex>
????</user>
????<user?id="1000002">
????????<username>Admin2</username>
????????<email>[email?protected]</email>
????????<age>22</age>
????????<sex>男</sex>
????</user>
????<user?id="1000003">
????????<username>Admin3</username>
????????<email>[email?protected]</email>
????????<age>27</age>
????????<sex>男</sex>
????</user>
????<user?id="1000004">
????????<username>Admin4</username>
????????<email>[email?protected]</email>
????????<age>25</age>
????????<sex>女</sex>
????</user>
????<user?id="1000005">
????????<username>Admin5</username>
????????<email>[email?protected]</email>
????????<age>20</age>
????????<sex>男</sex>
????</user>
????<user?id="1000006">
????????<username>Admin6</username>
????????<email>[email?protected]</email>
????????<age>23</age>
????????<sex>女</sex>
????</user>
</users>
#?-*-?coding:utf-8?-*-
"""
*?User:?lhj588
*?Date:?11-11-9
*?Time:?13:20
*?Desc:
"""?
from??xml.dom?import??minidom


def?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_list

def?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='编???号:%dn用户名:%sn性???别:%sn年???龄:%sn邮???箱:%sn?'?%?(int(user['id'])?,?user['username'],?user['sex']?,?user['email'])
????????????print?user_str
????????????print?'====================================================='

if?__name__?==?"__main__":
????test_xmltostring()
????test_laod_xml()
if?__name__?==?"__main__":
????test_xmltostring()
<user?id="1000001">
????????<username>Admin</username>
????????<email>[email?protected]</email>
????????<age>23</age>
????????<sex>男</sex>
????</user>
<user?id="1000002">
????????<username>Admin2</username>
????????<email>[email?protected]</email>
????????<age>22</age>
????????<sex>男</sex>
????</user>
<user?id="1000003">
????????<username>Admin3</username>
????????<email>[email?protected]</email>
????????<age>27</age>
????????<sex>男</sex>
????</user>
<user?id="1000004">
????????<username>Admin4</username>
????????<email>[email?protected]</email>
????????<age>25</age>
????????<sex>女</sex>
????</user>
<user?id="1000005">
????????<username>Admin5</username>
????????<email>[email?protected]</email>
????????<age>20</age>
????????<sex>男</sex>
????</user>
<user?id="1000006">
????????<username>Admin6</username>
????????<email>[email?protected]</email>
????????<age>23</age>
????????<sex>女</sex>
????</user>
-----------------------------------------------------
编???号:1000001
用户名:Admin
性???别:男
年???龄:23
邮???箱:[email?protected]
?
=====================================================
-----------------------------------------------------
编???号:1000002
用户名:Admin2
性???别:男
年???龄:22
邮???箱:[email?protected]
?
=====================================================
-----------------------------------------------------
编???号:1000003
用户名:Admin3
性???别:男
年???龄:27
邮???箱:[email?protected]
?
=====================================================
-----------------------------------------------------
编???号:1000004
用户名:Admin4
性???别:女
年???龄:25
邮???箱:[email?protected]
?
=====================================================
-----------------------------------------------------
编???号:1000005
用户名:Admin5
性???别:男
年???龄:20
邮???箱:[email?protected]
?B、测试解析XML
demo.py?文件中修改成
=====================================================
-----------------------------------------------------
编???号:1000006
用户名:Admin6
性???别:女
年???龄:23
邮???箱:[email?protected]
?
=====================================================

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读