您的位置:首页 > 编程语言 > Python开发

Python学习-创建修改XML

2017-12-20 13:46 363 查看
一、XML可扩展性标记语言,是一种非常常用的文件类型,主要用于存储和传输数据。本文根据python库文档中提供的xml.etree.ElementTree类来进行XML的解析, 官方参考文档https://docs.python.org/3.5/library/xml.etree.elementtree.html

二、 XML包含的元素类型

1. 标签<tag>

2. 属性 <tag  name="attribute">

3. 数据 <data>1<data>

例如:

<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>


三、创建XML文件

#coding=utf-8
import xml.etree.ElementTree as ET
#创建根节点
root = ET.Element("root")
#创建root的子节点sub1,并添加属性
firstNode = ET.SubElement(root,"sub1")
firstNode.attrib = {"name":"name attribute","age":"age attribute"}
#创建子节点1(sub1)的子节点sub2,并添加数据
secondNode = ET.SubElement(firstNode,"sub2")
secondNode.text = "test"
#创建elementtree对象,写文件
tree = ET.ElementTree(root)
tree.write("test01.xml")


创建的XML为:

<root>
<sub1 age="age attribute" name="name attribute">
<sub2>test</sub2>
</sub1>
</root>


四、修改XML文件

1. ElementTree.write("xmlfile"):更新xml文件

2. Element.append():为当前element对象添加子元素(element)

3. Element.set(key,value):为当前element的key属性设置value值

4. Element.remove(element):删除为element的节点

#coding=utf-8
import xml.etree.ElementTree as ET
#读取待修改文件
updateTree = ET.parse("test.xml")
root = updateTree.getroot()
#创建新节点并添加为root的子节点
newEle = ET.Element("NewElement")
newEle.attrib = {"name":"NewElement","age":"20"}
newEle.text = "This is a new element"
root.append(newEle)

#修改sub1的name属性
sub1 = root.find("sub1")
sub1.set("name","New Name")

#修改sub2的数据值
sub2 = root.find("sub1/sub2")
sub2.text = "New Value"

#写回原文件
updateTree.write("test.xml")

修改完的XML:

<root>
<sub1 age="age attribute" name="New Name">
<sub2>New Value</sub2>
</sub1>
<NewElement age="20" name="NewElement">This is a new element</NewElement>
</root>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: