python格式化输出简单xml
来源:互联网 发布:c语言编程表白 编辑:程序博客网 时间:2024/05/20 01:09
xml每项数据都可以包含tag、attribute、text。最简单的方法是使用python自带的xml.etree.ElementTree进行操作,最简单直观但安全性差(针对某些恶意xml内容),但在不用于读取,仅用于生成的时候还是很好用的。
其中每个Element对象都有以下属性
<tag attrib1=1>text</tag>tail1. tag:string对象,表示数据代表的种类。2. attrib:dictionary对象,表示附有的属性。3. text:string对象,表示element的内容。4. tail:string对象,表示element闭合之后的尾迹。
要创建一个简单的xml文件,可以这样操作
from xml.etree import ElementTree as ET# 新建节点root = ET.Element('root')# 三种子节点创建方式a = ET.SubElement(root, 'anode')b = ET.Element('bnode')root.append(b)c = ET.Element('cnode')root.extend([b, c])# 修改属性b.tag = 'NodeB'b.text = 'In the NodeB!'a.set('attra', 'true')b.attrib = { 'a': '1', 'b': '2'}b.set('a', '3')b.insert(0, c)# 输出tree = ET.ElementTree(root)tree.write('out.xml', encoding = 'utf-8', xml_declaration = True)# 输出结果"""<?xml version='1.0' encoding='utf-8'?><root><anode attra="true" /><NodeB a="3" b="2">In the NodeB!<cnode /></NodeB><NodeB a="3" b="2">In the NodeB!<cnode /></NodeB><cnode /></root>"""
那么问题来了。。。。。除了xml声明,所有的内容都在一行,想生成带缩进的xml文档怎么办?
选择使用对python的xml库拓展的lxml库,基本操作和etree相同,但增加了一些限制,如attrib属性不可直接修改
from lxml import etreeroot = etree.Element('root')a = etree.SubElement(root, 'anode')b = etree.Element('bnode')root.append(b)c = etree.Element('cnode')root.extend([b, c])b.tag = 'NodeB'b.text = 'In the NodeB!'a.set('attra', 'true')# 直接修改attrib属性不再可用b.set('a', '1')b.set('b', '2')b.insert(0, c)tree = etree.ElementTree(root)tree.write('out.xml', pretty_print=True, encoding = 'utf-8', xml_declaration = True)# 输出结果"""<?xml version='1.0' encoding='UTF-8'?><root> <anode attra="true"/> <NodeB a="1" b="2">In the NodeB!<cnode/></NodeB></root>"""
阅读全文
0 0
- python格式化输出简单xml
- 格式化XML输出
- C# 格式化输出XML
- java xml格式化输出
- java xml格式化输出
- xml 格式化输出
- Java格式化XML输出
- XML字符串格式化输出
- 简单的格式化输出
- python中的格式化输出
- python 格式化输出
- python 格式化输出
- python格式化dict输出
- python格式化输出
- python 格式化输出
- Python 的格式化输出
- python 字符串格式化 输出
- Python格式化输出
- 深度学习笔记(六) cnn 卷积神经网络
- java新手入门,自主学习历程分享。
- mysql的相关问答-上篇
- 学习网络编程-第八天
- Hiernate 笔记
- python格式化输出简单xml
- Annual summary(年度总结)--数据总结篇
- UVA11270 轮廓线DP
- AVL 树和红黑树,该用哪一个?
- 学习嵌入式Linux系统开发基础 第七课(makefile)
- C#机房登录之七层数据走向
- 数据库连接池
- 大话数据结构---思维导图
- html中location的用法详解