Forum
>>
Principianti
>>
Estrarre dati da fattura elettronica PA
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da Bruno Mikasa |
2015-08-16 21:48:51 - Estrarre dati da fattura elettronica PA
|
Vorrei estrarre dati da un file xml, una fattura elettronica PA che é un file xml standard i cui tag sono fissi,credo di aver capito che la via migliore sia invocare etree ed acquisire l'intero albero; avendo l'esatta posizione sull'albero di ogni elemento in notazione xpath non riesco a capire come fare per assegnare alle variabili i valori presenti nel file, ho letto la documentazione di etree e credo di perdermi qualcosa perché non ne esco, sono neofita per cui può essere che che mi manchi un elemento che si da per scontato. Devo usare findall(percorso xpath) o cosa?
Anticipatente ringraziando. Bruno Mikasa |
|
Scritto da Daniele aka Palmux |
2015-08-17 12:18:41 - Re: Estrarre dati da fattura elettronica PA
|
Ciao caro, è sicuro che ti conviene usare una libreria apposita come xml, lxml o similari.
Visto che il funzionamento è banale, posta quello che hai fatto e vediamo dove sta l'intoppo. Cya --- Ultima modifica di Daniele aka Palmux in data 2015-08-17 12:20:08 --- |
|
Scritto da Bruno Mikasa |
2015-08-17 19:12:08 - Re: Estrarre dati da fattura elettronica PA
|
senza variabili non ho niente su cui costruire, ho testato di poter estrarre l'xml, allego file con dettagli in nota e FEPA standard dacui trarre i riferimenti
sto cercando di imparare python in vacanza e credo che la soluzione migliore sia di applicarlo a problemi reali che potrebbero semplificarmi la vita al lavoro dove la possibilità di lavorare in tal senso non é prevista. grazie Mikasa |
|
Scritto da Daniele aka Palmux |
2015-08-22 18:53:39 - Re: Estrarre dati da fattura elettronica PA
|
Caro Mikasa, hai davvero l'imbarazzo della scelta per compiere un'operazione del genere, volendo di fatto estrarre semplicemente dei dati da un file XML.
Un mio collega che lavora un giorno sì e l'altro pure con quel formato, si è scocciato delle solite librerie come xml (che comunque nessuno ti vieta di utilizzare sia chiaro) e da un po' di tempo lo vedo spesso utilizzare xmltodict. Nel tuo caso ridurresti tutto a poche righe di codice. Mettiamo tu voglia prelevare dal documento l'IdPaese: import xmltodict with open('/path/to/file/IT01234567890_11001.xml') as fd: obj = xmltodict.parse(fd.read()) paese = obj['p:FatturaElettronica']['FatturaElettronicaHeader']['DatiTrasmissione']['IdTrasmittente']['IdPaese'] print paeseOtterrai come risultato: IT Un altra libreria che mi piace molto è untangle, che permette anche qui con estrema facilità di ottenere un risultato analogo: import untangle obj = untangle.parse('/path/to/file/IT01234567890_11001.xml') paese = obj.p_FatturaElettronica.FatturaElettronicaHeader.DatiTrasmissione.IdTrasmittente.IdPaese.cdata print paeseAnche qui un bel IT come risposta. Se poi vuoi restare sul solito e conosciuto, con la libreria xml ottieni lo stesso risultato: import xml.etree.cElementTree as ET obj = ET.ElementTree(file='/path/to/file/IT01234567890_11001.xml') for elem in obj.iterfind('FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente/IdPaese'): print elem.textIndovina un po', ancora un bell'IT come risposta. Insomma caro mio, libera la fantasia. Ciao. Daniele P.S. Visto che il sito con il CamelCase fa un po' come cazzo vuole, ti ho copiato i tre esempi anche su PasteBIN. |
|
Scritto da janas |
2019-06-09 12:45:56 - Re: Estrarre dati da fattura elettronica PA
|
Ciao
Io ho usato xmltodict ed ha funzionato perfettamente: print('-- fattura xml example --') fattura_xml_file = os.path.join(base_path, 'IT0999999 00B99.xml') tree = et.parse(fattura_xml_file) root = tree.getroot() Denominazione = [Denominazione.text for Denominazione in root.iter('Denominazione')] NumeroLinea = [NumeroLinea.text for NumeroLinea in root.iter('NumeroLinea')] data = [Denominazione, NumeroLinea] df = pd.DataFrame(data).T print(df) --- Ultima modifica di janas in data 2019-06-18 22:43:06 --- --- Ultima modifica di janas in data 2019-06-18 22:43:29 --- |
|
Scritto da Timer86 |
2022-06-30 12:19:41 - Re: Estrarre dati da fattura elettronica PA
|
Ciao,
io ho usato iterfind, però , nasce un problema. Se il campo datascadenza di pagamento non esiste, pensavo che mi rendesse un campo scadenza.text vuto, e dunque potessi procedere alla ricerca del campo successivo, invece sembra di no. non mi da errore, semplicemente non va al ciclo if successivo se scadenza.text è vuoto. for scadenza in obj.iterfind('FatturaElettronicaBody/DatiPagamento/DettaglioPagamento/DataScadenzaPagamento'): print(scadenza.text) #print thee expiration date if (not scadenza.text): for scadenza1 in obj.iterfind('FatturaElettronicaBody/DatiPagamento/DettaglioPagamento/GiorniTerminiPagamento'): from datetime import timedelta, date d1 = datem + timedelta(days=int(scadenza1.text)) print(f'New Expire {d1}') scadenza.text = d1 |
Pagina: 1
Esegui il login per scrivere una risposta.