<?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. Party Games

    Party Games You've been invited to a party. The host wants to divide the guests into 2 teams for par ...

  2. 转载:Windows Phone 8.1 投影我的屏幕使用教程

    原文地址:http://livesino.net/archives/6851.live 更新了软件的下载地址. Windows Phone 8.1 新功能投影我的屏幕(Project My Scree ...

  3. 使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面

    Donut Caching是缓存除了部分内容以外的整个页面的最好的方式,在它出现之前,我们使用"输出缓存"来缓存整个页面. 何时使用Donut Caching 假设你有一个应用程序 ...

  4. python中set和frozenset方法和区别

    set(可变集合)与frozenset(不可变集合)的区别:set无序排序且不重复,是可变的,有add(),remove()等方法.既然是可变的,所以它不存在哈希值.基本功能包括关系测试和消除重复元素 ...

  5. android Camera使用(一)

    现在的App不可避免的要使用到手机的相机功能 首先我们先来介绍下最简单的一个实现方式,启动系统自带的Activity 上代码: public void openCamera() { Intent i= ...

  6. HTML5--》details

    <details>是HTML5的新标签,用于描述文档或文档某个部分的细节. 目前只有 Chrome 和 Safari 6 支持 <details> 标签. 与 <summ ...

  7. leetcode279. Perfect Squares

    learn from DP class Solution { public: int numSquares(int n) { if(n<=0)return 0; int * dp = new i ...

  8. java jdbc 封装。。

    JDBC工具类...package it.cast.jdbcutils; import java.io.InputStream; import java.sql.Connection; import ...

  9. IT职场求生法则(转)

    摘要:在IT职场打滚超过10年了,从小小的程序员做到常务副总.相对于其它行业,IT职场应该算比较光明的了,但也陷阱重重,本文说说我的亲身体会,希望大家能在IT职场上战无不胜! 作者:张传波 软件知识大 ...

  10. JS常用的设计模式(16)—— 享元模式

    享元模式主要用来减少程序所需的对象个数. 有一个例子, 我们这边的前端同学几乎人手一本<JavaScript权威指南>. 从省钱的角度讲, 大约三本就够了. 放在部门的书柜里, 谁需要看的 ...