|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
[Risolto][Python]Parsing xml
Ciao,
ho un file xm tipo questo: <Environment NumLayers="2"> <Map Id="aaaaa" IsCategorical="0"/> <Map Id="bbbbb" IsCategorical="0"/> <Mask Id="ccccc"/> </Environment> Vorrei estrarre con uno script python i valori contenuti in map ip e mask id. Come posso fare? Grazie. Ultima modifica di pmhwp : 22-04-2010 alle 14:08. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Si,
l'avevo letta...ma non è che sia molto esperto di python..... Non è che potete farmi un esempio? Grazie ancora. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Per un parsing molto semplice e veloce (ma senza tanti controlli), ti suggerisco expat. Trovi un esempio bello e pronto che ti suggerisco di provare e di adattare in due secondi per il tuo caso d'uso.
Per qualcosa di più robusto c'è il link che ha ti ha segnalato Riccardo prima.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Scusate ma sono alle prime armi con python.
Allora ho provato questo esempio: Codice:
import xml.parsers.expat
# 3 handler functions
def start_element(name, attrs):
print 'Start element:', name, attrs
def end_element(name):
print 'End element:', name
def char_data(data):
print 'Character data:', repr(data)
p = xml.parsers.expat.ParserCreate()
p.StartElementHandler = start_element
p.EndElementHandler = end_element
p.CharacterDataHandler = char_data
p.Parse("""<?xml version="1.0"?>
<parent id="top"><child1 name="paul">Text goes here</child1>
<child2 name="fred">More text</child2>
</parent>""", 1)
Da come ho capito gli handler sono tipo dei thread che mostrano il contenuto del file. Cosa sbaglio? Grazie. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Come non detto...ora improvvisamente funziona.....
Ho adattato lo script in questo modo: Codice:
import xml.parsers.expat
# 3 handler functions
def start_element(name, attrs):
if(name=="Map" ):
print 'Map:', attrs
if(name=="Mask"):
print 'Mask:', attrs
p = xml.parsers.expat.ParserCreate()
p.StartElementHandler = start_element
p.ParseFile(open("request.xml","r"))
Il problema è che l'output é: Map: {u'IsCategorical': u'0', u'Id': u'rain_coolest.tif'} Solo che a me servirebbe solo rain_coolest.tif Come lo estraggo? Grazie. Ultima modifica di pmhwp : 22-04-2010 alle 09:32. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Codice:
if name == 'Map': print 'IsCategorical:', attrs['IsCategorical']
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 453
|
Grazie
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:05.



















