<?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包使用记录的更多相关文章

  1. python xml包 xml.etree.ElementTree使用记录

    19.7.1 教程 这是一个简短的教程使用xml.etree.ElementTree(简称为et).目标是展示一些构建模块和模块的基本概念 9.7.1.1. XML tree and elements ...

  2. LFD,非官方的Windows二进制文件的Python扩展包

    LFD,非官方的Windows二进制文件的Python扩展包 LFD,非官方版本.32和64位.Windows.二进制文件.科学开源.Python扩展包 克里斯托夫·戈尔克(by Christoph ...

  3. Python自定义包引入【新手必学】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:sys_song python中的Module是比较重要的概念.常见的情 ...

  4. python库包大全(转)

    python 库资源大全 转自: Python 资源大全中文版 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python ...

  5. 机器学习常用Python扩展包

    在Ubuntu下安装Python模块通常有3种方法:1)使用apt-get:2)使用pip命令(推荐);3)easy_instal 可安装方法参考:[转]linux和windows下安装python集 ...

  6. python常用绘图软件包记录

    在没有使用python之前,觉得matlab的绘图功能还算可以~但现在发现python的绘图包真的好强大,绘制出的图像非常专业漂亮,但具体使用还有待学习,这里记录学习过程中遇到的python绘图包,以 ...

  7. 关于python的包

    参考文献:http://blog.sina.com.cn/s/blog_615c388d01017b5o.html 注:本文大多对上连接的整理,仅用于学习,望博主见谅.转载请附上上述链接. 为什么要包 ...

  8. Odoo XML中操作记录与函数

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826037.html 一:XML文件中定义记录 XML中定义记录: 每个<record>元素有 ...

  9. # Python 3 & 爬虫一些记录

    目录 Python 3 & 爬虫一些记录 交互模式和命令行模式 函数积累 语法积累 列表和元组 输入 交互模式下输入多行 爬虫 HTTP报文请求头User-Agent信息 解析库pyquery ...

随机推荐

  1. Activity代码结构

    把一个Nova项目中典型的Activity代码结构简单归纳一下,保持代码风格的一致,有助于日常开发效率提升以及日后维护 Class Name     变量 constants   requests   ...

  2. jdk集合常用方法分析之HashSet和TreeSet

    HashSet常用方法介绍 public boolean add(E e) public boolean isEmpty() void clear() public Iterator<E> ...

  3. Skill

    Skill Yasser is an Egyptian coach; he will be organizing a training camp in Jordan. At the end of ca ...

  4. Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果

    本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18311877) 今天还是给大家带来自定义控件的编写,自定义一个Lis ...

  5. windows7 下的日期没有internet时间的选项卡

    原因1:你在某个域里面,退出就可以了 原因2:你把windows Time的服务给禁掉或者关掉了, 步骤:运行,输入services.msc 确定,查找到windows Time开了即可

  6. MSP430推荐网站

    http://www.amobbs.com/thread-5092914-1-1.html http://www.amobbs.com/thread-4701106-1-1.html

  7. ICDM 2007

    Language-Independent Set Expansion of Named Entities Using the Web. Chao Wang, Venu Satuluri, Sriniv ...

  8. Can't locate Switch.pm in @INC

    the perl version (5.14) shipped with 12.10 does not include the Switch.pm module needed while buildi ...

  9. [Nginx 2] form表单提交,图片上传

    导读:昨晚恶补了一些Nginx服务器的东西,从整体上对Nginx有一个初步的了解.上午去找师哥问了问目前项目中的使用情况,然后就开始上传图片了.这里就简单总结整理一下今天的成果,以后接着提升.简单粗暴 ...

  10. java实现 swing模仿金山打字 案例源码

    java实现 swing模仿金山打字 案例源码,更多Java技术就去Java教程网.http://java.662p.com 代码: <font size="3">im ...