首页 > 编程 > Python > 正文

Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法

2019-11-25 11:40:55
字体:
来源:转载
供稿:网友

总结了一下使用Python对xml文件的解析,用到的模块儿如下:

分别从xml字符串和xml文件转换为xml对象,然后解析xml内容,查询指定信息字段。

from xml.dom.minidom import parse, parseStringfrom xml.etree import ElementTreeimport xml.dom.minidom"""Get XML String info 查询属性值  response:xml string  tag:xml tag  element:xml attribute"""def get_xml_info(response, element):  DOMTree = xml.dom.minidom.parseString(response)  return DOMTree.documentElement.getAttribute(element)"""Get XML String info 查询制定名称的特定标签id  xmlstring:xml str  return config id"""def get_config_id_from_xml(xmlstring, scan):  root = ElementTree.fromstring(xmlstring)  configs = root.findall('config')  for config in configs:    config_name = config.find('name').text    if config_name == scan:      return config.attrib['id']"""Get XML String info 查询指定id  xmlstring:xml str  return report id"""def get_report_id_from_xml(xmlstring):  root = ElementTree.fromstring(xmlstring)  report_id = root.find('report_id').text  return report_id"""Get XML String info  xmlstring:xml str  return progress """def get_progress_from_xml(xmlstring):  root = ElementTree.fromstring(xmlstring)  task = root.find('task')  progress = float(task.find('progress').text)  if progress < 0:    return 100.0  else:    return progress"""Get XML Report info 从xml文件查询  file_path : report path"""def get_xml_report(file_path):  report = {}  result_dicts = {}  resultsList = []  try:    root = ElementTree.parse(file_path)  except:    return {}  if root is not None:    creation_time = root.find("creation_time")    if creation_time is not None:      report[creation_time.tag] = creation_time.text    if root.find("report") is not None:      scan_start = root.find("report").find("scan_start")      if scan_start is not None:        if scan_start.text:          report[scan_start.tag] = scan_start.text    results = root.getiterator("result")    if results is not None:      for result in results:        if result.find("threat") is not None:          if result.find("threat").text != "Log":            resultsList.append(getResults(result))  report["Results"] = resultsList  return report

总结

以上所述是小编给大家介绍的Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表