J'ai sorti et couper une partie d'une source XML à partir NVD et ci-dessous est l'extrait:Python: Obtenir des valeurs de nœuds et des attributs à l'aide lxml + objectiver + findall ou fromstring
<?xml version='1.0' encoding='UTF-8'?>
<nvd xmlns="http://nvd.nist.gov/feeds/cve/1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://nvd.nist.gov/feeds/cve/1.2 http://nvd.nist.gov/schema/nvdcve.xsd" pub_date="2014-07-01" nvd_xml_version="1.2">
<entry CVSS_base_score="6.4" CVSS_exploit_subscore="10.0" CVSS_impact_subscore="4.9" CVSS_score="6.4" CVSS_vector="(AV:N/AC:L/Au:N/C:P/I:P/A:N)" CVSS_version="2.0" modified="2014-06-30" name="CVE-2011-1381" published="2014-06-27" seq="2011-1381" severity="Medium" type="CVE">
<desc>
<descript source="cve">Unspecified vulnerability in IBM OpenPages GRC Platform 6.1.0.1 before IF4 allows remote attackers to bypass intended access restrictions via unknown vectors.</descript>
</desc>
</entry>
<entry CVSS_base_score="3.5" CVSS_exploit_subscore="6.8" CVSS_impact_subscore="2.9" CVSS_score="3.5" CVSS_vector="(AV:N/AC:M/Au:S/C:P/I:N/A:N)" CVSS_version="2.0" modified="2014-06-30" name="CVE-2014-4669" published="2014-06-28" seq="2014-4669" severity="Low" type="CVE">
<desc>
<descript source="cve">HP Enterprise Maps 1.00 allows remote authenticated users to read arbitrary files via a WSDL document containing an XML external entity declaration in conjunction with an entity reference within a GetQuote operation, related to an XML External Entity (XXE) issue.</descript>
</desc>
</entry>
</nvd>
Comme mentionné sur le titre de cette question et pour l'extrait ci-dessus, Je veux juste obtenir la valeur et l'attribut du nœud 'descript'. J'ai essayé d'utiliser la méthode de findall mais il est de retour une liste vide:
root = etree.fromstring(open("c:/temp/CVE/sample.xml").read()).getroottree().getroot()
root.findall('entry')
Ce retour:
[]
Lorsque j'imprime l'étiquette de la racine, voici ce qu'il retourne:
'{http://nvd.nist.gov/feeds/cve/1.2}nvd'
J'ai également essayé d'imprimer les étiquettes du parent immédiat et de ses enfants:
for e in root.iterchildren():
print "Immediate parent : %s" % e.tag
children = e.getchildren()
for c in children : print "\t\tchildren : %s" % c.tag
Voici ce qu'il retourne:
Immediate parent : {http://nvd.nist.gov/feeds/cve/1.2}entry
children : {http://nvd.nist.gov/feeds/cve/1.2}desc
Immediate parent : {http://nvd.nist.gov/feeds/cve/1.2}entry
children : {http://nvd.nist.gov/feeds/cve/1.2}desc
Encore une fois, ce que je veux juste est d'obtenir la attrib et la valeur du noeud « descript ». Toutes les idées sont grandement appréciées. Merci d'avance!
Merci beaucoup. A travaillé pour moi – jaysonpryde