博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python写xml文件
阅读量:4978 次
发布时间:2019-06-12

本文共 2456 字,大约阅读时间需要 8 分钟。

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

1 
2
3
4
姓名1
5
电话1
6
地址1
7
点餐次数1
8
9
10
姓名2
11
电话2
12
地址2
13
点餐次数2
14
15

  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             # 每一组信息先创建节点
,然后插入到父节点
下18 order = doc.createElement('order')19 orderlist.appendChild(order)20 21 # 将姓名插入
中22 # 创建节点
23 customer = doc.createElement('customer')24 # 创建
下的文本节点25 customer_text = doc.createTextNode(name)26 # 将文本节点插入到
下27 customer.appendChild(customer_text)28 # 将
插入到父节点
下29 order.appendChild(customer)30 31 # 将电话插入
中,处理同上32 phone = doc.createElement('phone')33 phone_text = doc.createTextNode(tel)34 phone.appendChild(phone_text)35 order.appendChild(phone)36 37 # 将地址插入
中,处理同上38 address = doc.createElement('address')39 address_text = doc.createTextNode(addr)40 address.appendChild(address_text)41 order.appendChild(address)42 43 # 将点餐次数插入
中,处理同上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')

转载于:https://www.cnblogs.com/wangjian8888/p/6104703.html

你可能感兴趣的文章