Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    3

    Esportazione blocchi XML

    Buongiorno,

    chiedo il vostro aiuto per una operazione per me pressoché impossibile:

    L'ideale sarebbe con Bash Script, ma anche altri linguaggi andrebbero bene.

    Da un file xml con 500.000 righe devo esportare dei blocchi racchiusi tra due tag:

    esempio:
    <tag1>
    <tag2>
    <tag-SI>
    <nome>Mario</nome>
    <cognome>Rossi</cognome>
    <ID>100474</ID>
    </tag-SI>
    <tag-NO>
    <nome>Mario</nome>
    <cognome>Rossi</cognome>
    <ID>100474</ID>
    </tag-NO>
    <tag-SI>
    <nome>Bruno</nome>
    <cognome>Bruni</cognome>
    <ID>231223</ID>
    </tag-SI>
    </tag2>
    </tag1>

    Vorrei ottenere il seguente risultato:

    <tag-SI>
    <nome>Mario</nome>
    <cognome>Rossi</cognome>
    <ID>100474</ID>
    </tag-SI>
    <tag-SI>
    <nome>Bruno</nome>
    <cognome>Bruni</cognome>
    <ID>231223</ID>
    </tag-SI>

    Grazie in anticipo a tutti.

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Puoi usare qualsiasi cosa ti permetta di fare una query XPath. Ciò significa volendo anche un programma da installare che poi chiami dallo script batch
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    3
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Puoi usare qualsiasi cosa ti permetta di fare una query XPath. Ciò significa volendo anche un programma da installare che poi chiami dallo script batch
    Grazie della risposta, ho provato a usare alcuni dei programmi in giro, xmlint per esempio, ma tutti hanno problemi con la lettura del file, il fatto è che ha una struttura proprietaria (mi viene da pensare quello) e non si riesce a gestire. Per questo motivo lo volevo gestire come solo testo.

    Al momento sto provando la stringa:


    sed -n -e "/tag-SI/,/tag-SI/p"

    ma non capisco perchè non si ferma al ultimo tag-SI, in prattica funziona ma quando ha finito di leggere l'ultimo tag poi continua a leggere il resto del file, ottenendo una qualcosa di simile a questo:

    <tag-SI>
    <nome>Mario</nome>
    <cognome>Rossi</cognome>
    <ID>100474</ID>
    </tag-SI>
    <tag-SI>
    <nome>Bruno</nome>
    <cognome>Bruni</cognome>
    <ID>231223</ID>
    </tag-SI>
    </tag2>
    </tag1>
    ecc...
    Ultima modifica di sapan; 28-12-2016 a 10:06

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    3
    questa è la stringa che funziona:

    sed -n -e '/<tag-SI*/,/<\/tag-SI>/p'
    Ultima modifica di sapan; 28-12-2016 a 12:02 Motivo: Risolto.

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.