from xml.dom.minidom importparse, parseStringfrom xml.etree importElementTreeimportxml.dom.minidom"""Get XML String info 查询属性值
response:xml string
tag:xml tag
element:xml attribute"""
defget_xml_info(response, element):
DOMTree=xml.dom.minidom.parseString(response)returnDOMTree.documentElement.getAttribute(element)"""Get XML String info 查询制定名称的特定标签id
xmlstring:xml str
return config id"""
defget_config_id_from_xml(xmlstring, scan):
root=ElementTree.fromstring(xmlstring)
configs= root.findall('config')for config inconfigs:
config_name= config.find('name').textif config_name ==scan:return config.attrib['id']"""Get XML String info 查询指定id
xmlstring:xml str
return report id"""
defget_report_id_from_xml(xmlstring):
root=ElementTree.fromstring(xmlstring)
report_id= root.find('report_id').textreturnreport_id"""Get XML String info
xmlstring:xml str
return progress"""
defget_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:returnprogress"""Get XML Report info 从xml文件查询
file_path : report path"""
defget_xml_report(file_path):
report={}
result_dicts={}
resultsList=[]try:
root=ElementTree.parse(file_path)except:return{}if root is notNone:
creation_time= root.find("creation_time")if creation_time is notNone:
report[creation_time.tag]=creation_time.textif root.find("report") is notNone:
scan_start= root.find("report").find("scan_start")if scan_start is notNone:ifscan_start.text:
report[scan_start.tag]=scan_start.text
results= root.getiterator("result")if results is notNone:for result inresults:if result.find("threat") is notNone:if result.find("threat").text != "Log":
resultsList.append(getResults(result))
report["Results"] =resultsListreturn report