在files目录中有一个products.xml文件,要求读取该文件中products节点所有子节点的值及子节点的属性值
读取products.xml文件
- 使用parse,导入模块xml.etree.ElementTree
from xml.etree.ElementTree import parse
doc = parse('C:\\PyTest\\Selenium_OpenSchools\\test_selenium\\03-数据存储\\files\\products.xml')
读取xml文件中的每一个元素
- 使用for 循环一条条的读取值
for item in doc.iterfind('products/product'):
id = item.findtext('id')
name = item.findtext('name')
price = item.findtext('price')
uuid = item.get('uuid')
打印出每条读取后的属性及值
print('uuid=',uuid)
print('id=',id)
print('name=',name)
print('price=',price)
print('-'*10)
以下是完整的读取xml文件节点的代码
from xml.etree.ElementTree import parse
doc = parse('C:\\PyTest\\Selenium_OpenSchools\\test_selenium\\03-数据存储\\files\\products.xml')
print(type(doc))
for item in doc.iterfind('products/product'): #迭代读取xml文件中的每个节点值
id = item.findtext('id') #输出id属性
name = item.findtext('name') #输出name属性
price = item.findtext('price') #输出price属性
uuid = item.get('uuid') #输出uuid属性
print('uuid=',uuid)
print('id=',id)
print('name=',name)
print('price=',price)
print('-'*10)
将products.xml文件内容附上
<root>
<products>
<product uuid = '1234'>
<id>10000</id>
<name>iPhone9</name>
<price>9999</price>
</product>
<product uuid = '4321'>
<id>20000</id>
<name>mate20</name>
<price>5555</price>
</product>
<product uuid = '5678'>
<id>30000</id>
<name>mateX</name>
<price>3099</price>
</product>
</products>
</root>
总结
1.通过parse函数可以读取xml文档,该函数返回ElementTree类型的对象
2.通过返回对象的iterfind方法可以对xml文件中的节点进行迭代读取