Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Python + XPath + XML]

    Salve a tutti, spero di essere nella sezione giusta!
    Ho un piccolo problema riguardante XPath che utilizzo con python (lato server).
    Per la precisione non riesco a gestire il parsing nel caso in cui nel nodo del file xml ci siano più tag con lo stesso nome.
    Mi spiego:
    Il mio programma deve fare dei piccoli filtri e uno di questi deve mettere in una variabile tutti i nodi i cui tag opening contengano (es) "2011".
    Il problema è che il file è formato da tanti nodi che contengono:
    codice:
    <location> 
                    ....
                    ....
                    ....
                    <opening showAs="orario settimanale">Mon, Tue, Wed, Thu, Fri: 0830-1230 1530-193.</opening>
    		<closing showAs="festivi"> 01-01, 01-06, P, LA, 04-25, 05-01, 06-02, 08-15, 11-01, 12-08, 12-25, 12-26:
    			.</closing>
    		<opening showAs="Di turno sulle 24 ore">2011-10-03: 0830-2400. 2011-10-04, 2011-10-05, 2011-10-06, 2011-10-07,
    			2011-10-08, 2011-10-09: 0000-2400. 2011-10-10: 0000-0830.</opening>
    		<opening showAs="Weekend di turno">2011-03-26, 2011-03-27: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Weekend di turno">2011-05-14, 2011-05-15: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Weekend di turno">2011-07-02, 2011-07-03: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Weekend di turno">2011-08-20, 2011-08-21: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Weekend di turno">2011-11-26, 2011-11-27: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Weekend di turno">2012-01-14, 2012-01-15: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Domenica di turno">2011-03-05: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Domenica di turno">2011-04-23: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Domenica di turno">2011-06-11: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Domenica di turno">2011-07-30: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Domenica di turno">2011-09-17: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Domenica di turno">2011-11-05: 0830-1230, 1530-1930.</opening>
    		<opening showAs="Domenica di turno">2011-12-24: 0830-1230, 1530-1930.</opening> </location>
    io con XPath ho creato questa query:
    codice:
    locations/location[not(contains(translate({0}, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ,"abcdefghijklmnopqrstuvwxyz"),translate("{1}", "AABCDEFGHIJKLMNOPQRSTUVWXYZ" ,"abcdefghijklmnopqrstuvwxyz")))]'.format(key,value)
    dove ovviamente key sta per opening e value per la stringa da ricercare.
    Quella query però controlla solo il primo tag opening ,quindi se metto value="mon" mi restituisce, mentre se metto qualcosa che non è contenuta nel primo opening non restituisce niente.

    Chiedo quindi consiglio a voi per risolvere il problema!

    grazie anticipatamente a tutti!

  2. #2
    Ho sbagliato ad inserire la query! Quella semifunzionante è:

    codice:
    locations/location[contains(translate({0}, "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ,"abcdefghijklmnopqrstuvwxyz"),translate("{1}", "AABCDEFGHIJKLMNOPQRSTUVWXYZ" ,"abcdefghijklmnopqrstuvwxyz"))]'.format(key,value)
    Attendo consigli! Grazie

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da dario 91
    Salve a tutti, spero di essere nella sezione giusta!
    Nel dubbio, accertati della sezione corretta in cui postare, oppure chiedi, ma in ogni caso non fare crossposting aprendo una discussione identica anche in altre aree.

    Tengo aperta questa discussione, modificando il titolo opportunamente.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Scusate ma avendo un pò di urgenza ho postato in tutti e due le sezioni, mea culpa

    Cmq non sapete indicarmi un modo per poter controllare tutti i tag opening di un nodo?
    quello che devo fare io è praticamente
    ------> for i in (quantità opening) <--------- è questo che mi manca
    if opening contains 'string':
    true
    else: false

    solo che lo devo fare con XPath

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.