<?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. iOS UILabel详解

    1.创建 CGRect rect = CGRectMake(100, 200, 50, 50); UILabel *label = [[UILabel alloc] initWithFrame:rec ...

  2. Skill

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

  3. 剑指Offer:面试题16——反转链表(java实现)

    问题描述 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点.链表结点如下: public class ListNode { int val; ListNode next = n ...

  4. selenium简介

    Selenium是一个开源的和便携式的自动化软件测试工具,用于测试Web应用程序有能力在不同的浏览器和操作系统运行.Selenium真的不是一个单一的工具,而是一套工具,帮助测试者更有效地基于Web的 ...

  5. Xcode去除某种类型的警告

      首先来看下当有警告时,怎么找到警告类型,在某条警告上,右键—>Reveal in Log     下面 [ ] 中间就是警告信息     去除警告信息的几种方式:   一.使用编译器提供的宏 ...

  6. JS 在open打开的子窗口页面中调用父窗口页面的JS方法

    需求的情景如下: 1:做新增或修改等操作的时候打开一个新的浏览器窗口(使用window.open(参数等)方法) 2:在新增或修改等的页面上有返回按钮.重置按钮.保存按钮,对于返回就直接关闭此窗口(使 ...

  7. jQuery datepicker

    <script type="text/javascript" src="/assets/datepicker/jquery-ui-1.9.1.min.js" ...

  8. Java基础——IO流

    今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...

  9. TCP/IP详解学习笔记(14)-- TCP可靠传输的实现

    1.概述      为方便描述可靠传输原理,假定数据传输只在一个方向上进行,即A发送数据,B给出确认 2.以字节为单位的滑动窗口      TCP的滑动窗口是以字节为单位的.为了便于说明,字节编号取得 ...

  10. 解决ScrollView下嵌套ListView、GridView显示不全的问题

    /** * 自定义gridview,解决ListView中嵌套gridview显示不正常的问题(1行半) * @author wangyx * @version 1.0.0 2012-9-14 */ ...