解析XML文件
XML是可扩展标记语言,主要用于传输和存储数据
解析方式
使用lxml解析
主要注意: text tag attrib 使用方式 有 get() 以及迭代的情况
数据示例
a31
代码示例
#!/usr/bin/env python
# -*-coding:utf-8-*-
# @file parse_xml_exp.py
# @date 2020-10-**
from lxml import etree
def node_text_attrib(node):
result_line = ""
for result in node.iter():
if result.text is not None:
result_line = result_line + result.tag + " : " + result.text + '\n'
else:
# result.tag, result.attrib.get("key"), result.attrib
result_line = result_line + result.tag + " : " + result.attrib.get("key")+ '\n'
return result_line
if __name__ == '__main__':
input_file = r"C:\Users\test\Desktop\jobs.xml"
# 将xml解析为树结构 - parse() used to parse from files and file-like objects
# 解析文件类型对象
xml_file = etree.parse(input_file)
# 获得该树的树根
root_node = xml_file.getroot()
print(root_node)
# 子节点
if len(root_node):
print("子节点个数: ", len(root_node))
# XML elements support attributes
# 这样便可以遍历根元素的所有子元素(这里是job元素)
for article in root_node:
print("元素名称:", article.tag)
# 用.get("属性名")可以得到article元素相应属性的值
print(article.get("id"))
for field in article:
# 用.tag可以得到元素的名称,而.text可以得到元素的内容
if field.tag == "reader":
# #将元素text连同sub_element一起打印
print(node_text_attrib(field))
说明
1.进行数据操作之前记得备份,使用备份的数据进行操作。确保失败可回溯和追踪的措施之一
2,可变和不可变的部分-使用脚本拼接
3.模板数据一定要记性验证,同时有些重复性的工作记得使用工具来校验
参考
Xml的使用在一些场景下比较常见