bonjour,
Avant tout je tiens à dire que je ne connais ni XPath NI Python!!!
A) j'ai un fichier TEXT.XML que je voudrais transformer en un fichier utilisable par un programme.
j'utilise les commandes Python :
with open('/text.xml') as f:
t = etree.parse(f)
malheureusement mon fichier TEXT.XML comporte plusieurs lignes : <?xml version="1.0" encoding="UTF-8" ?>
et j'ai donc des erreurs : lxml.etree.XMLSyntaxError: XML declaration allowed only at the start of the document, line 15, column 6
comment résoudre ce problème?
B)
je fais une découverte réseau avec un outil qui crée un fichier XML
je veux extraire de ce fichier les noms et les adresses IP des devices
je veux écrire ces données dans un fichier paramètre d'un outil de monitoring (en l'occurence Alignak)
je ne veux donc rien faire à la main
voila le fichier XML que je reçois :
<?xml version="1.0" encoding="UTF-8" ?>
<REQUEST>
<CONTENT>
<DEVICE>
<IP>192.168.33.1</IP>
<MAC>00:50:56:c0:00:08</MAC>
<NETPORTVENDOR>VMware</NETPORTVENDOR>
</DEVICE>
<MODULEVERSION>2.3</MODULEVERSION>
<PROCESSNUMBER>1</PROCESSNUMBER>
</CONTENT>
<DEVICEID>foo</DEVICEID>
<QUERY>NETDISCOVERY</QUERY>
</REQUEST>
<?xml version="1.0" encoding="UTF-8" ?>
<REQUEST>
<CONTENT>
<DEVICE>
<DNSHOSTNAME>gateway</DNSHOSTNAME>
<IP>192.168.33.2</IP>
<MAC>00:50:5650:d0</MAC>
<NETPORTVENDOR>VMware</NETPORTVENDOR>
</DEVICE>
<MODULEVERSION>2.3</MODULEVERSION>
<PROCESSNUMBER>1</PROCESSNUMBER>
</CONTENT>
<DEVICEID>foo</DEVICEID>
<QUERY>NETDISCOVERY</QUERY>
</REQUEST>
comme vous le voyez, il y a plusieurs lignes <?xml version
je veux récupérer ce qu'il y a en gras :
<DNSHOSTNAME>gateway</DNSHOSTNAME>
<IP>192.168.33.2</IP>
<MAC>00:50xx:d0</MAC>
<NETPORTVENDOR>VMware</NETPORTVENDOR>
dans chaque balise <DEVICE>
une idée?
merci
Partager