Friday, March 14, 2014

XML - ricerca ricorsiva rivisitata

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

How to create a virtual linux machine with qemu under Debian or Ubuntu with near native graphics performance

It's been a long time since my latest post. I know, I'm lazy. But every now and then I like to publish something that other people c...