Во-первых, я проверил множество сообщений о проблеме, которую у меня есть, и попробовал различные методы получения требуемого значения, даже если я идентифицировал тег из документа XML, который я не могу работать как распечатать значение, содержащееся в <cve>VALUE</cve>
. Все сообщения, которые я видел, относятся к элементам с атрибутными значениями, и поскольку мой тег не содержит значения атрибута, я не уверен, как получить значение, которое я получаю после.Python XML Parsing с ElementTree
Я разбираю файл nessus с Elementtree и python.
Я могу определить тег, который содержит значение, но я не могу получить значение, очень расстраивающее. Кажется, что нет значения атрибута (его пробел), но, как вы можете видеть по XML-примеру, есть значение (но im принимает его не значение атрибута). Любые указатели будут оценены.
Пример XML
<SNIP>
<ReportItem port="445" svc_name="cifs" protocol="tcp" severity="0" pluginID="10398" pluginName="Microsoft Windows SMB LsaQueryInformationPolicy Function NULL Session Domain SID Enumeration" pluginFamily="Windows">
<bid>959</bid>
<cve>CVE-2000-1200</cve>
<description>By emulating the call to LsaQueryInformationPolicy() it was possible to obtain the domain SID (Security Identifier).
The domain SID can then be used to get the list of users of the domain</description>
<fname>smb_dom2sid.nasl</fname>
<osvdb>715</osvdb>
<plugin_modification_date>2015/01/12</plugin_modification_date>
<plugin_name>Microsoft Windows SMB LsaQueryInformationPolicy Function NULL Session Domain SID Enumeration</plugin_name>
<plugin_publication_date>2000/05/09</plugin_publication_date>
<plugin_type>local</plugin_type>
<risk_factor>None</risk_factor>
<script_version>$Revision: 1.51 $</script_version>
<solution>n/a</solution>
<synopsis>It is possible to obtain the domain SID.</synopsis>
<xref>OSVDB:715</xref>
<plugin_output>The remote domain SID value is :
FAKESTUFF HERE</plugin_output>
</ReportItem>
<SNIP>
Текущий код
import elementtree.ElementTree as ET
def getCVE(nessus_file):
try:
tree = ET.parse(nessus_file)
doc = tree.getroot()
walk = doc.getiterator('cve')
for cve in walk:
print cve
except:
pass
getCVE('file.nessus')
Результат Из Кодекса
<Element cve at 10fd05170>
<Element cve at 10fd20f38>
<Element cve at 10fd2c200>
<Element cve at 10fd3ea70>
<Element cve at 10fd44a70>
<Element cve at 10fd44b00>
<Element cve at 10fd5c170>
<Element cve at 10fd767e8>
<Element cve at 10fdbf290>
<Element cve at 10fdce440>
<Element cve at 10fdce4d0>
<SNIP>
Если ваш собственный ответ правильного ответа, пожалуйста, примите его. –
@rob Я буду делать, когда охлаждение истекло – iNoob