python生成xml文件
先上代码:
#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
from xml.dom.minidom import Document def readFile(filename, lines):
with open(filename, 'r') as f:
for line in f:
line = line.rstrip(' \n')
if line.startswith('//') or len(line) == 0:
continue
lines.append(line) def writeXml(filename, lines, tagNames):
# 创建doc
doc = Document()
# 创建根节点
root = doc.createElement(tagNames[0])
doc.appendChild(root) # 记录每层节点的最新元素
nodes = {0: root} for line in lines:
index = line.rfind(' ')
level = (index + 1) / 4 + 1
line = line.lstrip(' ') node = doc.createElement(tagNames[level])
node.setAttribute('name', line) nodes[level - 1].appendChild(node)
nodes[level] = node with open(filename, 'w') as f:
f.write(doc.toprettyxml(indent='\t')) def display(lines):
for line in lines:
print(line) if __name__ == '__main__':
lines = []
readFile('./file/sector.txt', lines) tagNames = ['SectorFile', 'Sectors', 'sector', 'sector_second']
writeXml('./file/sector.xml', lines, tagNames)
1. 使用库 xml.dom.minidom
2. readFile函数
这个函数的功能上读取文件,并把每一行内容除去右边空格,存入列表中
参数一:文件名
参数二:文件行存入的列表
3. writeXml函数
功能:读取列表,生成xml文件
参数一:生成的xml文件名
参数二:文件行列表
参数三:xml标签名
此处读取的文件,左侧是通过tab键进行分层的。但由于编辑器设置的一个tab键,替换成四个空格。所以此处的规律是查找最后一个空格出现的位置,加1除4就可以得到该文件在xml中所处的层级。
第22行:此处的目的是建立一个level-node的字典,用于存放当前层级的最新节点。便于字节点查找父节点
python生成xml文件的更多相关文章
- python 生成 xml文件 属性的顺序问题
需求很奇葩. 文档示例 <ITEM key="username" eng="User Name" chn="用户名" val=&quo ...
- Python 读写XML文件
Python 生成XML文件 from xml.dom import minidom # 生成XML文件方式 def generateXml(): impl = minidom.getDOMImple ...
- Python中使用dom模块生成XML文件示例
在Python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文件,下一篇文章再继续介绍Dom解析XML文件. 在生成XML文件中,我们主 ...
- Python:Dom生成XML文件(写XML)
http://www.ourunix.org/post/327.html 在python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章是Dom生成XML文 ...
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
- Java生成XML文件
我们在数据库中的数据可以将其提取出来生成XML文件,方便传输.例如数据库中有Admin这张表: 我们写一个java类表示admin数据: package xmlDom.vo; import java. ...
- Android 使用xml序列化器生成xml文件
在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...
- C# 生成xml文件
本篇文章旨在.net环境下生成xml文件,以控制台应用程序为例进行说明. 1.在vs中新建控制台应用程序CreateXml 2.CreateXmlFile:主要生成xml的函数 public void ...
- 视频播放实时记录日志并生成XML文件
需求描述: 在JWPlayer视频播放过程中,要求实时记录视频观看者播放.暂停的时间,并记录从暂停到下一次播放时所经过的时间.将所有记录保存为XML文件,以方便数据库的后续使用. 实现过程: 尝试1: ...
随机推荐
- Flume启动错误之:Bootstrap Servers must be specified
今天测试项目的时候需要启动Flume,然而在启动时遇到了Bootstrap Servers must be specified错误,错误日志如下: [kfk@bigdata-pro01 flume-- ...
- ICSharpCode.SharpZipLi 压缩、解压文件 附源码
http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, GZip, ...
- C# 和 Linux 时间戳转换
/// <summary> /// 时间戳转为C#格式时间 /// </summary> /// <par ...
- siteserver学习笔记
1.安装 安装前的准备工作 参考https://docs.siteserver.cn/getting-started/#/how-to-install-siteserver-cms官网的文档写的很详细 ...
- scrollHieght、offsetHeight、clientHeight、width、height
1.scroll滚动(scrollTop.Left.Height.Width) scroll()当用户滚动指定的元素时,会发生 scroll 滚动事件: scrollWidth.scrollHeigh ...
- [Java][Servlet] Cannot call sendRedirect() after the response has been committed
做一个Login Demo的时候,写了如下代码: protected void doPost(HttpServletRequest request, HttpServletResponse respo ...
- jsp---tomcat===》》内置对象
1.内置对象: request: 方法:getParameter("txtName"):获取和页面上的name属性对象的value值 返回String ...
- Python is 和 == 的区别, 编码和解码
一.is 和 == 的区别 is : 进行比较,比较的是内存地址是否一致 ==:进行比较,比较的是值是否相等 1.小数据池: 数字小数据池范围 -5~256 字符串中如果有特殊字符则他们的内存地址不一 ...
- cf914D. Bash and a Tough Math Puzzle(线段树)
题意 题目链接 Sol 直接在线段树上二分 当左右儿子中的一个不是\(x\)的倍数就继续递归 由于最多递归到一个叶子节点,所以复杂度是对的 开始时在纠结如果一段区间全是\(x\)的两倍是不是需要特判, ...
- lucene的使用与优化
1 lucene简介1.1 什么是luceneLucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工 ...