python学习(二) ElementTree解析、读写、创建xml文件

python学习(二) 读写xml文件

1.xml格式


将其存储为sample.xml 
Tag:使用<>包围的部分 
Element:被Tag包围的部分,例如22中的22 
Attribute:在Tag中可能存在的name/value对,如'name':'Blue'

2.解析XML

以下都是使用ElementTree处理XML 
from xml.etree import ElementTree as ET

(1)ElementTree中类对象

xml是一种层级化的数据结构,可以使用树状结构表示 
ElementTree:表示整个xml层级结构 
Element:表示树形结构中的父节点 
SubElement:表示树形结构中的所有子节点,有些节点既可以是父节点,也可以是子节点 
例如:上图中.......部分

(2)读xml文件数据

读入根节点方法(一)

# tree就是一个ElementTree对象 
tree = ET.parse(sample.xml) 
#root是根节点即上图中的 
root = tree.getroot()

读入根节点方法(二)

data = open("sample.xml").read() 
root = ET.fromstring(data)

(3)解析xml文件数据

ElementTree中类对象的值

tag:对应xml文件Tag部分,以字符串结构存储,例如'lab','person' 
attrib:对应xml文件Attribute部分,以字典结构存储,例如{'name':'Blue'} 
text:对应xml文件Elment部分,以字符串结构存储,例如22中'22'

解析xml文件

#使用for...in...遍历数据 
from xml.etree import ElementTree as ET 
tree = ET.parse('G:/xml/sample.xml') 
#获取根节点 
root = tree.getroot() 
for person in root: 
print(person.tag, person.attrib) 
for data in person: 
print(data.tag, data.text) 
输出: 
/>>>person {'name': 'Blue'} 
/>>>age 22 
/>>>gender male 
/>>>person {'name': 'Yellow'} 
/>>>age 20 
/>>>gender female

3.创建xml文件

from xml.etree import ElementTree as ET 
#首先创建根节点 
root = ET.Element('lab') 
#添加子节点SubElement(父节点Element对象, Tag字符串格式, Attribute字典格式) 
person1 = ET.SubElement(root, 'person', {'name':'Blue'}) 
#添加子节点 
age1 = ET.SubElement(person1, 'age') 
#添加text,即22,字符串格式 
age1.text = '22' 
gender1 = ET.SubElement(person1, 'gender') 
gender1.text = 'male' 
person2 = ET.SubElement(root, 'person', {'name':'Yellow'}) 
age2 = ET.SubElement(person2, 'age') 
age2.text = '20' 
gender2 = ET.SubElement(person2, 'gender') 
gender2.text = 'female' 
#将根目录转化为xml树状结构(即ElementTree对象) 
tree = ET.ElementTree(root) 
#在终端显示整个xml内容 
ET.dump(root) 
#写入xml文件 
tree.write('G:/pythonStudy/xml/sample.xml', encoding="utf-8", xml_declaration=True)

4.向xml文件添加内容

#可以使用append方法添加子节点 
tree = ET.parse('G:/pythonStudy/xml/sample.xml') 
root = tree.getroot() 
#创建新的子节点 
person3 = ET.Element('person', {'name':'Brown'}) 
age3 = ET.SubElement(person3, 'age') 
age3.text = '20' 
gender3 = ET.SubElement(person3, 'gender') 
gender3.text = 'male' 
#向根节点添加新的子节点 
root.append(person3) 
#写入 
tree.write('G:/pythonStudy/xml/sample.xml', encoding="utf-8", xml_declaration=True)

5.修改xml文件中的内容

tree = ET.parse('G:/pythonStudy/xml/sample.xml') 
root = tree.getroot() 
#查找root根节点下面的所有Tag为‘person’的节点 
person = root.findall('person') 
#删除第一个person子节点 
root.remove(person[0]) 
#新增或修改attitude 
person[1].set('name', 'White') 
#新增子节点 
root.append(childElement) 
#修改text直接访问即可 
person[2].text = '25'

 

附本文的创建例程和VOC标签格式xml文件的解析和添加标签例程

https://github.com/A-mockingbird/Practice

  • 16
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python读写XML文件的常用模块有xml.etree.ElementTreexml.dom.minidom。 1. 使用xml.etree.ElementTree模块读取XML文件: 首先需要导入xml.etree.ElementTree模块,然后使用ElementTree.parse()方法解析XML文件,返回一个ElementTree对象。接着可以使用该对象的getroot()方法获取XML文件的根元素。可以通过遍历根元素及其子元素的方式来获取XML文件中的数据。 示例代码如下: ```python import xml.etree.ElementTree as ET # 读取XML文件 tree = ET.parse('example.xml') # 获取根元素 root = tree.getroot() # 遍历根元素及其子元素 for child in root: print(child.tag, child.attrib) ``` 2. 使用xml.etree.ElementTree模块写入XML文件: 要写入XML文件,可以创建ElementTree对象,然后使用ElementTree.Element()方法创建根元素。通过调用根元素的Element()方法来创建子元素,以及调用子元素的text属性来设置元素的文本内容。最后使用ElementTree.ElementTree()方法将ElementTree对象写入XML文件。 示例代码如下: ```python import xml.etree.ElementTree as ET # 创建根元素 root = ET.Element('root') # 创建子元素 child1 = ET.Element('child1') child1.text = 'Content of child1' root.append(child1) # 创建ElementTree对象 tree = ET.ElementTree(root) # 写入XML文件 tree.write('example.xml') ``` 以上就是Python读写XML文件的简单示例。xml.dom.minidom模块与xml.etree.ElementTree模块类似,提供了操作XML文件的方法,但使用方式略有不同。 ### 回答2: 在Python中,我们可以使用`xml`模块来读写XML文件。 要读取XML文件,我们可以使用`xml.etree.ElementTree`模块的`parse`函数。具体步骤如下: 1. 导入`xml.etree.ElementTree`模块。 2. 使用`parse`函数打开XML文件,并返回一个`ElementTree`对象。 3. 使用`getroot`方法获取XML文件的根元素。 4. 使用`find`、`findall`等方法定位到需要读取的元素,然后使用`text`属性获取其文本内容。 以下是一个读取XML文件的示例代码: ```python import xml.etree.ElementTree as ET # 打开XML文件解析 tree = ET.parse('example.xml') # 获取根元素 root = tree.getroot() # 定位到需要读取的元素,获取其文本内容 for child in root.findall('book'): title = child.find('title').text author = child.find('author').text year = child.find('year').text print(f'Title: {title}, Author: {author}, Year: {year}') ``` 要写入XML文件,我们可以使用`xml.etree.ElementTree`模块的相关方法来创建XML元素,并使用`ElementTree`对象的`write`函数将元素写入XML文件。 以下是一个写入XML文件的示例代码: ```python import xml.etree.ElementTree as ET # 创建根元素 root = ET.Element('books') # 创建子元素 book1 = ET.SubElement(root, 'book') title1 = ET.SubElement(book1, 'title') title1.text = 'Book Title 1' author1 = ET.SubElement(book1, 'author') author1.text = 'Author 1' year1 = ET.SubElement(book1, 'year') year1.text = '2021' book2 = ET.SubElement(root, 'book') title2 = ET.SubElement(book2, 'title') title2.text = 'Book Title 2' author2 = ET.SubElement(book2, 'author') author2.text = 'Author 2' year2 = ET.SubElement(book2, 'year') year2.text = '2022' # 创建ElementTree对象 tree = ET.ElementTree(root) # 写入XML文件 tree.write('example.xml', encoding='utf-8', xml_declaration=True) ``` 以上是使用Python读写XML文件的基本操作,根据具体需求,我们可以进一步学习和使用XML相关的操作方法。 ### 回答3: Python读写XML文件可以使用内置的xml模块。首先,我们需要导入xml.etree.ElementTree模块来处理XML数据。 要读取XML文件,我们可以使用ElementTree的parse函数。例如,如果我们有一个名为"example.xml"的XML文件,我们可以这样读取它: ```python import xml.etree.ElementTree as ET tree = ET.parse("example.xml") root = tree.getroot() ``` 这将解析XML文件并将其存储在ElementTree对象中。我们可以使用getroot()方法获取XML的根元素。 要访问XML元素的内容,可以使用标签名称和迭代器的方式。例如,要打印出XML文件中所有元素的标签和文本内容,可以使用以下代码: ```python for element in root.iter(): print(element.tag, element.text) ``` 要写入XML文件,我们可以创建一个新的ElementTree对象,并添加元素和属性。然后,我们可以使用ElementTree的write函数将其写入文件。 以下是一个将数据写入XML文件的示例代码: ```python import xml.etree.ElementTree as ET root = ET.Element("root") child1 = ET.SubElement(root, "child1") child1.text = "这是child1的文本内容" child2 = ET.SubElement(root, "child2") child2.text = "这是child2的文本内容" tree = ET.ElementTree(root) tree.write("output.xml") ``` 这将创建一个名为"output.xml"的新XML文件,并在其中写入我们创建XML结构。 综上所述,我们可以使用xml.etree.ElementTree模块读写XML文件。读取时使用parse函数解析XML文件并获取根元素,写入时创建ElementTree对象,添加元素和属性,并利用write函数将其写入文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值