为了便于后续的读取处理,这里就将信息保存在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. 竹林蹊径-深入浅出Windows内核开发作者的博客

    http://blog.csdn.net/blog_index http://blog.csdn.net/blog_index/article/details/6012054 http://downl ...

  2. 善待Redis里的数据--Unable to validate object

    又是一篇关于姿势的文章,为什么是”又”呢?因为上个星期刚写完一篇关于Apache Commons Pool的正确使用姿势的文章,点击此处阅读. Redis为我们提供便利的同时,我们也要善待里面的数据 ...

  3. perl 调用按钮输出到文本框

    sub push_b4 { #$txt -> insert('end'); #select $txt; system("expect c:\\\\expect.txt >expe ...

  4. 4.1. 如何在Windows环境下开发Python

    4.1. 如何在Windows环境下开发Python 4.1. 如何在Windows环境下开发Python 4.1.1. Python的最原始的开发方式是什么样的 4.1.1.1. 找个文本编辑器,新 ...

  5. UVA 489-- Hangman Judge(暴力串处理)

     Hangman Judge  In ``Hangman Judge,'' you are to write a program that judges a series of Hangman gam ...

  6. 【OpenCV新手教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/23184547 作者:毛星云(浅墨) ...

  7. 数字温湿度传感器DHT11--操作源代码

    //IO定义 #define P_DataIN_DHT11 PB0_IN #define P_DataOUT_DHT11 PB0_OUT //宏定义 #define BSET_DHT11 P_Data ...

  8. JAVA NIO 真正做到处理一个事件

    如下图所示: 组1:如果只有上面的红框,不能真正处理该事件,下次执行select()方法,仍然可以select出来该事件.出现死循环现象.如果只有下面的红框,下次select()结果为0,如果外层循环 ...

  9. HTML 基础 1

    1. 文件结构: HTML文件的固定结构: <html> <head>...</head> <body>...</body> </ht ...

  10. 样式布局分享-基于frozen.js的移动OA

    最近改造了公司移动OA的样式,改善了显示效果和用户体验,其中用到了腾讯的 frozen.js 框架,在此把布局代码分享给大家,希望大家可以用得上,具体效果如下图. Demo 百度网盘 下载地址 Git ...