Le cose non vanno sempre lisce quando si esplora un protocollo. Nel caso dei file SVG il procedimento seguito finora puo' non funzionare (anzi non funziona quasi mai) perchè il protocollo SVG è lontano dall'avere sempre gli stessi contenuti e la stessa disposizione degli stessi. L'unica cosa certa è che il file SVG è un file XML, quindi composto da tag nidificate, che i dati sono prevalentemente negli attributi piuttosto che in testo libero e che dobbiamo quindi trovare una modalità di esplorazione, sempre ricorsiva, che in primo luogo ci dia la certezza di estrarre tutti i tag e relativi attributi e quindi ci consenta la comparazione dei tag con modelli tipo e relativi pattern di estrazione con le regexp.
Ho quindi riscritto (e allego di seguito) il prototipo della funzione xmlrecur per adattarsi a qualsiasi file xml o SVG di cui vogliamo fare successive conversioni.
#|/usr/bin/env python from xml.etree import ElementTree as ET def xmlrecur(x): print '<elemento',x,'>' print '<tag>', x.tag print '<attributo>',x.attrib for key in x.attrib: print 'singolo attributo', key, '-', x.attrib[key] print '<testo>',x.text print '-'*80 for i in x: xmlrecur(i) tree = ET.parse('xxx.xml') root = tree.getroot() xmlrecur(root)
Vi prego di notare che la proprietà attrib è un dizionario, di cui si puo' fare la scansione. Su questa particolarità concentreremo l'analisi per l'identificazione delle word caratteristiche di nostro interesse.
Ancora qualche giorno per finire il tutto. A presto.
No comments:
Post a Comment