python xml包使用记录
<?xml version="1.0" encoding="utf-8" ?>
<request>
<functionID>subPackageInfo</functionID>
<time>2014-02-10 15:10:50</time>
<packageList>
<packageInfo>
<orderId>22088315090</orderId>
<expressName>EMS</expressName>
<expressTel>01</expressTel>
<expressNo>0001</expressNo>
<productId>1001173023</productId>
<allotQuatity>5</allotQuatity>
<outOfStockQuatity>0</outOfStockQuatity>
<promotionID></promotionID>
</packageInfo> <packageInfo>
<orderId>22088315090</orderId>
<expressName>EMS</expressName>
<expressTel>010-55675233</expressTel>
<expressNo>0001</expressNo>
<productId>1001173123</productId>
<allotQuatity>5</allotQuatity>
<outOfStockQuatity>0</outOfStockQuatity>
<promotionID>-1</promotionID>
</packageInfo> <packageInfo>
<orderId>22088315090</orderId>
<expressName>EMS</expressName>
<expressTel>010-55675233</expressTel>
<expressNo>0001</expressNo>
<productId>1001173223</productId>
<allotQuatity>0</allotQuatity>
<outOfStockQuatity>1</outOfStockQuatity>
<promotionID>-1</promotionID>
</packageInfo> </packageList>
</request>
首先把以上xml文件保存到本地
导入xml模块,使用dom.minidom导入xml文件
#coding:utf-8
from xml.dom import minidom
dom=minidom.parse('22088315090.xml')
>>> packs=dom.getElementsByTagName('packageInfo')
查找xml下面的所有packageInfo节点
>>> pack_childnotes=packs[0].childNodes
查找第一个packageInfo的所有子节点
>>> for i in pack_childnotes:print '###',i.toxml() ### ### <orderId>22088315090</orderId>
### ### <expressName>EMS</expressName>
### ### <expressTel>01</expressTel>
### ### <expressNo>0001</expressNo>
### ### <productId>1001173023</productId>
### ### <allotQuatity>5</allotQuatity>
### ### <outOfStockQuatity>0</outOfStockQuatity>
### ### <promotionID/>
###
以上打印出所有类型的xml信息,包括元素类型和文本类型
>>> for i in pack_childnotes:
if i.nodeType==i.TEXT_NODE:
pass
else:
print 'name',i.nodeName
tagname=i.nodeName
if i.childNodes:
print 'type',i.childNodes[0].data
value=i.childNodes[0].data
else:
value=''
orders_info[tagname]=value
print orders_info {u'orderId': u'', u'promotionID': '', u'outOfStockQuatity': u'', u'expressNo': u'', u'expressTel': u'', u'productId': u'', u'expressName': u'EMS', u'allotQuatity': u''}
把第一个packageInfo的子节点数据拿到保存在字典中
完整的代码如下:
#coding:utf-8
from xml.dom import minidom
dom=minidom.parse('22088315090.xml')
packs=dom.getElementsByTagName('packageInfo')
orders=[]
#pack_childnotes=packs[0].childNodes def control(pack):
pack_childnotes=pack.childNodes
orders_info={}
for i in pack_childnotes:
if i.nodeType==i.TEXT_NODE:
pass
else:
#print 'name',i.nodeName
tagname=i.nodeName
if i.childNodes:
#print 'type',i.childNodes[0].data
value=i.childNodes[0].data
else:
value=''
orders_info[tagname]=value
return orders_info for pack in packs:
#print pack orders.append(control(pack))
print orders
python xml包使用记录的更多相关文章
- python xml包 xml.etree.ElementTree使用记录
19.7.1 教程 这是一个简短的教程使用xml.etree.ElementTree(简称为et).目标是展示一些构建模块和模块的基本概念 9.7.1.1. XML tree and elements ...
- LFD,非官方的Windows二进制文件的Python扩展包
LFD,非官方的Windows二进制文件的Python扩展包 LFD,非官方版本.32和64位.Windows.二进制文件.科学开源.Python扩展包 克里斯托夫·戈尔克(by Christoph ...
- Python自定义包引入【新手必学】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:sys_song python中的Module是比较重要的概念.常见的情 ...
- python库包大全(转)
python 库资源大全 转自: Python 资源大全中文版 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python ...
- 机器学习常用Python扩展包
在Ubuntu下安装Python模块通常有3种方法:1)使用apt-get:2)使用pip命令(推荐);3)easy_instal 可安装方法参考:[转]linux和windows下安装python集 ...
- python常用绘图软件包记录
在没有使用python之前,觉得matlab的绘图功能还算可以~但现在发现python的绘图包真的好强大,绘制出的图像非常专业漂亮,但具体使用还有待学习,这里记录学习过程中遇到的python绘图包,以 ...
- 关于python的包
参考文献:http://blog.sina.com.cn/s/blog_615c388d01017b5o.html 注:本文大多对上连接的整理,仅用于学习,望博主见谅.转载请附上上述链接. 为什么要包 ...
- Odoo XML中操作记录与函数
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826037.html 一:XML文件中定义记录 XML中定义记录: 每个<record>元素有 ...
- # Python 3 & 爬虫一些记录
目录 Python 3 & 爬虫一些记录 交互模式和命令行模式 函数积累 语法积累 列表和元组 输入 交互模式下输入多行 爬虫 HTTP报文请求头User-Agent信息 解析库pyquery ...
随机推荐
- The Ninth Hunan Collegiate Programming Contest (2013) Problem A
Problem A Almost Palindrome Given a line of text, find the longest almost-palindrome substring. A st ...
- HDU1116图论
http://acm.split.hdu.edu.cn/showproblem.php?pid=1116 #include<stdio.h> #include<algorithm&g ...
- Android下实现控件的叠加显示
<FrameLayout android:layout_width="fill_parent" android:layout_height="match_paren ...
- 使用virtualbox安装centos虚拟机,以及VirtualBox无法安装64位Linux CentOS的解决办法
之前一直用vmware的虚拟机,好吧,其实一直盗版挺不好的,然后想用centos搭点东西,结果在vmare上安装centos总是有些问题,看了人给的建议换用virtualbox,虽然virtualbo ...
- Android开发-API指南-<grant-uri-permission>
<grant-uri-permission> 英文原文:http://developer.android.com/guide/topics/manifest/grant-uri-permi ...
- 实验室中搭建Spark集群和PyCUDA开发环境
1.安装CUDA 1.1安装前工作 1.1.1选取实验器材 实验中的每台计算机均装有双系统.选择其中一台计算机作为master节点,配置有GeForce GTX 650显卡,拥有384个CUDA核心. ...
- 学习练习 java 输入输出流练习2
编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt p ...
- JS 点击按钮后弹出遮罩层,有关闭按钮
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- javascript设计模式-观察者模式
观察者模式定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己. UML示意图: 其中的角色: Subject:主 ...
- 如何解决SWAT模型数据移动目录后出现的“SWAT2005.mdb database specified in your MasterProgress table does not exists. Please correct and try again”的问题
方法: 1.用MS Access软件打开SWAT模型工程文件的数据文件,如“**流域模拟.mdb”,该文件一般存放在工程文件“**流域模拟.mxd”相同的路径: 2.打开以后,找到“MasterPro ...