zoukankan      html  css  js  c++  java
  • python写xml文件

    为了便于后续的读取处理,这里就将信息保存在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='	', encoding='utf-8'))
    52 
    53         return
    复制代码

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

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

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

  • 相关阅读:
    centos下部署启动elasticsearch错误集合与解决方案
    rpm和yum的区别
    centos7 安装Jdk1.8.0
    nvm-windows安装
    linux运行.sh命令
    centos7 安装 nvm
    centos7 安装、使用git
    转载:centos安装redis
    centos7 安装Node.js并配置为全局可用
    前端代码tomcat下简单部署
  • 原文地址:https://www.cnblogs.com/whwywzhj/p/6104703.html
Copyright © 2011-2022 走看看