Python_xml_minidom
1、解析xml...
解析部分是参照着原文和api来弄得:http://www.cnblogs.com/lhj588/archive/2011/11/09/2242483.html
各种方法的使用参照着api来看就懂得了...
Test.xml
<?xml version="1.0" encoding="UTF-8" ?> <users> <user id="1000001"> <username>Admin1</username> <email>admin@live.cn</email> <age>23</age> <sex>男</sex> </user> <user id="1000002"> <username>Admin2</username> <email>admin@live.cn</email> <age>23</age> <sex>男</sex> </user> <user id="1000003"> <username>Admin3</username> <email>admin@live.cn</email> <age>23</age> <sex>男</sex> </user> <user id="1000004"> <username>Admin4</username> <email>admin@live.cn</email> <age>23</age> <sex>男</sex> </user> <user id="1000005"> <username>Admin5</username> <email>admin@live.cn</email> <age>23</age> <sex>男</sex> </user> </users>
Test.py
# -*- coding:utf-8 -*- from xml.dom import minidom #获取标签中的对应属性的值... def get_attrvalue(attr,attrname): return attr.getAttribute(attrname) if attr 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 '' #Return a string or byte string containing the XML represented by the DOM node. def xml_to_string(filename='test.xml'): doc=minidom.parse(filename) return doc.toxml('utf-8') #获取xml中的数据... def get_xml_data(filename='test.xml'): doc=minidom.parse(filename) #获取Document Object 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]) user_email=get_nodevalue(node_email[0]) user_age=int(get_nodevalue(node_age[0])) user_sex=get_nodevalue(node_sex[0]) 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_load_xml(): user_list=get_xml_data() for user in user_list: 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_load_xml()
2、创建xml
0.0 在没网络的情况下查阅api弄得...xml的格式和上部分的一样
# -*- coding:utf-8 -*- from xml.dom import minidom #主要是用来生成一个document对象 domimplementation=minidom.getDOMImplementation() #创建document type doc_type=domimplementation.createDocumentType("users",1,1) #生成document对象 document=domimplementation.createDocument("", "users",doc_type)
# createDocument(namespaceUri, qualifiedName, doctype)
#该方法中的doctype是由createDocumentType(qualifiedName, publicId, systemId)生成的...
#其中qualifiedName的格式是prefix:tagname,prefix表明名称空间,tagname表明标签名,假如我们写成qualifiedName='xxx:users' 那么标签为<xxx:users />
#root 即users root=document.documentElement #创建子标签 node=document.createElement("user") #添加注释 com_node=document.createComment("user's info show ...") node.appendChild(com_node) #创建孙子标签》。。 name_node=document.createElement('username') email_node=document.createElement('email') age_node=document.createElement('age') sex_node=document.createElement('sex') #为孙子标签添加值 text_node=document.createTextNode("Admin") name_node.appendChild(text_node) text_node=document.createTextNode("admin@live.cn") email_node.appendChild(text_node) text_node=document.createTextNode("22") age_node.appendChild(text_node) text_node=document.createTextNode("男") sex_node.appendChild(text_node) #为子标签添加孙子标签... node.appendChild(name_node) node.appendChild(email_node) node.appendChild(age_node) node.appendChild(sex_node)
#为子标签添加属性 node.setAttribute("id","1000001") #root添加子标签 root.appendChild(node) print(document.toxml()) #输出到文件中 with open('userinfo.xml',mode='w') as f: f.write(document.toxml())