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())