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

本文阅读 1 分钟
首页 Python笔记 正文

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

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

  1. from xml.dom.minidom import parse, parseString
  2. from xml.etree import ElementTree
  3. import xml.dom.minidom
  4. """
  5. Get XML String info 查询属性值
  6. response:xml string
  7. tag:xml tag
  8. element:xml attribute
  9. """
  10. def get_xml_info(response, element):
  11. DOMTree = xml.dom.minidom.parseString(response)
  12. return DOMTree.documentElement.getAttribute(element)
  13. """
  14. Get XML String info 查询制定名称的特定标签id
  15. xmlstring:xml str
  16. return config id
  17. """
  18. def get_config_id_from_xml(xmlstring, scan):
  19. root = ElementTree.fromstring(xmlstring)
  20. configs = root.findall('config')
  21. for config in configs:
  22. config_name = config.find('name').text
  23. if config_name == scan:
  24. return config.attrib['id']
  25. """
  26. Get XML String info 查询指定id
  27. xmlstring:xml str
  28. return report id
  29. """
  30. def get_report_id_from_xml(xmlstring):
  31. root = ElementTree.fromstring(xmlstring)
  32. report_id = root.find('report_id').text
  33. return report_id
  34. """
  35. Get XML String info
  36. xmlstring:xml str
  37. return progress
  38. """
  39. def get_progress_from_xml(xmlstring):
  40. root = ElementTree.fromstring(xmlstring)
  41. task = root.find('task')
  42. progress = float(task.find('progress').text)
  43. if progress < 0:
  44. return 100.0
  45. else:
  46. return progress
  47. """
  48. Get XML Report info 从xml文件查询
  49. file_path : report path
  50. """
  51. def get_xml_report(file_path):
  52. report = {}
  53. result_dicts = {}
  54. resultsList = []
  55. try:
  56. root = ElementTree.parse(file_path)
  57. except:
  58. return {}
  59. if root is not None:
  60. creation_time = root.find("creation_time")
  61. if creation_time is not None:
  62. report[creation_time.tag] = creation_time.text
  63. if root.find("report") is not None:
  64. scan_start = root.find("report").find("scan_start")
  65. if scan_start is not None:
  66. if scan_start.text:
  67. report[scan_start.tag] = scan_start.text
  68. results = root.getiterator("result")
  69. if results is not None:
  70. for result in results:
  71. if result.find("threat") is not None:
  72. if result.find("threat").text != "Log":
  73. resultsList.append(getResults(result))
  74. report["Results"] = resultsList
  75. return report
解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

Python3实现一个简单的tcp客户端,用于测试服务端端口开放情况
« 上一篇 12-24
Python3 如何实现定时器任务代码
下一篇 » 12-24

发表评论

惪特博客
  • 文章总数:
    18497 篇
  • 评论总数:
    53318 条
  • 标签总数:
    8873 个
  • 总浏览量:
    22646468 次
  • 最后更新:
    6天前

最多点赞

随便看看

标签TAG