经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
来源:jb51  时间:2019/9/24 8:34:03  对本文有异议

总结了一下使用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

总结

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号