为了便于后续的读取处理,这里就将信息保存在xml文件中,想到得到的文件如下:

 1 <?xml version="1.0" encoding="utf-8"?>
2 <orderlist>
3 <order>
4 <customer>姓名1</customer>
5 <phone>电话1</phone>
6 <address>地址1</address>
7 <count>点餐次数1</count>
8 </order>
9 <order>
10 <customer>姓名2</customer>
11 <phone>电话2</phone>
12 <address>地址2</address>
13 <count>点餐次数2</count>
14 </order>
15 </orderlist>

  Python写xml比较简单,直接使用minidom即可。

  思路也比较简单,因为dom文档就是一棵树,每一个标签都是一个节点,包括文本内容也是节点,因此从根节点开始,把节点一级一级的插入即可。

  在上一篇中已经将抓取的信息存入了字典orderDict中,这里我们直接在类Order中添加一个方法,将orderDict里面的每一项信息插入DOM树,然后再写入本地xml文件。

  由于比较简单,直接给出代码:

  

 1     from xml.dom.minidom import Document
2 # 将self.orderDict中的信息写入本地xml文件,参数filename是xml文件名
3 def writeInfoToXml(self, filename):
4 # 创建dom文档
5 doc = Document()
6
7 # 创建根节点
8 orderlist = doc.createElement('orderlist')
9 # 根节点插入dom树
10 doc.appendChild(orderlist)
11
12 # 依次将orderDict中的每一组元素提取出来,创建对应节点并插入dom树
13 for (k, v) in self.orderDict.iteritems():
14 # 分离出姓名,电话,地址,点餐次数
15 (name, tel, addr, cnt) = (v[0], k, v[1], v[2])
16
17 # 每一组信息先创建节点<order>,然后插入到父节点<orderlist>下
18 order = doc.createElement('order')
19 orderlist.appendChild(order)
20
21 # 将姓名插入<order>中
22 # 创建节点<customer>
23 customer = doc.createElement('customer')
24 # 创建<customer>下的文本节点
25 customer_text = doc.createTextNode(name)
26 # 将文本节点插入到<customer>下
27 customer.appendChild(customer_text)
28 # 将<customer>插入到父节点<order>下
29 order.appendChild(customer)
30
31 # 将电话插入<order>中,处理同上
32 phone = doc.createElement('phone')
33 phone_text = doc.createTextNode(tel)
34 phone.appendChild(phone_text)
35 order.appendChild(phone)
36
37 # 将地址插入<order>中,处理同上
38 address = doc.createElement('address')
39 address_text = doc.createTextNode(addr)
40 address.appendChild(address_text)
41 order.appendChild(address)
42
43 # 将点餐次数插入<order>中,处理同上
44 count = doc.createElement('count')
45 count_text = doc.createTextNode(str(cnt))
46 count.appendChild(count_text)
47 order.appendChild(count)
48
49 # 将dom对象写入本地xml文件
50 with open(filename, 'w') as f:
51 f.write(doc.toprettyxml(indent='\t', encoding='utf-8'))
52
53 return

  在先调用getAllOrders方法之后,再调用writeInfoToXml即可将所有信息写入xml文件中。

如下是给节点设置属性的:

chapter.setAttribute('number', '1')

python写xml文件的更多相关文章

  1. PLSQL_PLSQL读和写XML文件方式(案例)

    2012-05-01 Created By BaoXinjian

  2. Python写UTF8文件,UE、记事本打开依然乱码的问题

    Python写UTF8文件,UE.记事本打开依然乱码的问题 Leave a reply 现象:使用codecs打开文件,写入UTF-8文本,正常无错误.用vim打开正常,但记事本.UE等打开乱码. 原 ...

  3. python写xml及几个问题

    python写xml的库和用法 几个问题: 1.乱码问题 设写入UTF-8编码 write函数增加encoding='utf-8' 2.空元素xml节点简写及完整写 write函数增加 short_e ...

  4. python读取xml文件报错ValueError: multi-byte encodings are not supported

    1.在使用python对xml文件进行读取时,提示ValueError: multi-byte encodings are not supported 很多贴子上说把xml的编码格式改为,就可以正常执 ...

  5. Python解析xml文件遇到的编码解析的问题

    使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...

  6. python读写xml文件

    python读取xml文件 xml文件是具有树状结构的,如果想要访问某个叶子结点,必须逐层获取其父结点,要读取某个叶子结点内容用text成员 使用前先加载xml工具包 try: import xml. ...

  7. python操作xml文件

    一.什么是xml? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. abc.xml <?xml version="1.0&q ...

  8. 【C++】【TinyXml】xml文件的读写功能使用——写xml文件

    TinyXml工具是常用比较简单的C++中xml读写的工具 需要加载 #include "TinyXml\tinyxml.h" 在TinyXML中,根据XML的各种元素来定义了一些 ...

  9. Python 读写XML文件

    Python 生成XML文件 from xml.dom import minidom # 生成XML文件方式 def generateXml(): impl = minidom.getDOMImple ...

随机推荐

  1. JIT和程序的首次执行

    由于C#源代码经过编译器编译生成的是IL代码,而IL是与CPU无关的机器语言.因此当程序运行于特定的CPU时,首先必须将IL转换成本地CPU指令,这正是JIT(Just-In-Time)编译器的任务. ...

  2. html5 notifications通知

    http://www.html5rocks.com/en/tutorials/notifications/quick/?redirect_from_locale=zh http://www.paulu ...

  3. [置顶] lvs-tun隧道模式搭建

    一.lvs直接路由原理 由于图片还要一张一张上传,可以到下面网站下载我的word版本: http://download.csdn.net/user/y0908105023 补充基础知识: OSI(Op ...

  4. Handler机制原理图、源码、使用!!!!!

    android的消息处理机制——Looper,Handler,Message  (原理图.源码) 转自:http://my.oschina.net/u/1391648/blog/282892 在开始讨 ...

  5. Makefile中使用$$的使用

      http://blog.csdn.net/darennet/article/details/8185881   Makefile中使用$$的使用     在makefile中,会经常使用shell ...

  6. JavaScript学习笔记——JS中的变量复制、参数传递和作用域链

    今天在看书的过程中,又发现了自己目前对Javascript存在的一个知识模糊点:JS的作用域链,所以就通过查资料看书对作用域链相关的内容进行了学习.今天学习笔记主要有这样几个关键字:变量.参数传递.执 ...

  7. OOP组合和继续的优缺点

    —— 详解继承与组合的优缺点   组合与继承都是提高代码可重用性的手段.在设计对象模型时,可以按照语义来识别类之间的组合关系和继承关系.在有些情况下,采用组合关系或者继承关系能完成同样的任务,组合和继 ...

  8. Hadoop 安装 (4) SSH无密码验证配置

    验证SSH 和 RSYNC 已经安装好了 Master 生成密码对以及对于 Slave 的无密码登录. 见:http://www.cnblogs.com/xia520pi/archive/2012/0 ...

  9. 基于粒子滤波的物体跟踪 Particle Filter Object Tracking

    Video来源地址 一直都觉得粒子滤波是个挺牛的东西,每次试图看文献都被复杂的数学符号搞得看不下去.一个偶然的机会发现了Rob Hess(http://web.engr.oregonstate.edu ...

  10. switch 与 whille相互套用

    一直自以为还比较了解C++,这两天写个小工具结果出现了个bug,查了几个小时.现在才发现我这么水. switch是C++后来推出了,目的在于提高代码结构清晰度. 但是switch与while连用时是有 ...