Эй, я работаю с objectify довольно долго.
<HOST_LIST>
<HOST>
<ID>93998121</ID>
<IP>1.1.1.1</IP>
<TRACKING_METHOD>IP</TRACKING_METHOD>
<OS><![CDATA[Windows]></OS>
<LAST_SCAN_DATETIME>2018-03-31T08:22:34Z</LAST_SCAN_DATETIME>
<LAST_VM_SCANNED_DATE>2018-02-13T08:22:14Z</LAST_VM_SCANNED_DATE>
<LAST_VM_SCANNED_DURATION>41</LAST_VM_SCANNED_DURATION>
<DETECTION_LIST>
<DETECTION>
<QID>15</QID>
<TYPE>Info</TYPE>
<SEVERITY>1</SEVERITY>
<RESULTS><![CDATA[IP address Host name
1.1.1.1 No registered hostname]]></RESULTS>
<LAST_FOUND_DATETIME>2019-03-13T08:22:14Z</LAST_FOUND_DATETIME>
<TIMES_FOUND>184</TIMES_FOUND>
<IS_DISABLED>0</IS_DISABLED>
<LAST_PROCESSED_DATETIME>2019-03-13T08:22:34Z</LAST_PROCESSED_DATETIME>
</DETECTION>
<DETECTION>
<QID>11</QID>
<TYPE>Info</TYPE>
<SEVERITY>1</SEVERITY>
<RESULTS><![CDATA[test]</RESULTS>
Мы конвертируем ответ в формат xml, используя библиотеку objectify.Как мы можем пройти через узлы в этой ситуации и проверяем, существуют ли эти узлы, мы не хотим получать доступ к имени узла этим методом, например HOST_LIST.HOST.ID
, мы сделали что-то вроде
для i вxml_data.RESPONSE [path1] [path2]:
, но при этом мы можем получить доступ только к подузлам, таким как ОС, IP не к узлам в detection_list
Мы хотим пройти через все подузлы ихранить результаты в дБ.path1 =HOST_LIST
и path2=HOST
и
fetch =["IP","OS","ID","LAST_SCAN_DATETIME","LAST_VM_SCANNED_DATE"]
Как получить доступ к QID ,TYPE
с помощью этого метода.
for res in xml_data.RESPONSE[path1][path2]:
dicts = {}
if fetch has
for field in fetch[0]:
dicts[field] = res[field]