[bash] verifica e inserimento stringa in un file

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
tomm
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 796
Iscrizione: lunedì 15 ottobre 2007, 10:16
Desktop: Gnome
Distribuzione: Ubuntu 16.04

Re: [bash] verifica e inserimento stringa in un file

Messaggio da tomm »

piccolotauro2 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4591021#p4591021][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:

Codice: Seleziona tutto

[root@localhost apache-tomcat-6.0.39]# xmlstarlet --version
1.3.1
compiled against libxml2 2.7.6, linked with 20706
compiled against libxslt 1.1.26, linked with 10126
[root@localhost apache-tomcat-6.0.39]# 
probabilmente l'opzione con il default namespace funziona solo da xmlstarlet 1.5. Se non puoi aggiornare il programma bisogna trovare un'altra soluzione ma ora come ora non saprei
piccolotauro2
Prode Principiante
Messaggi: 40
Iscrizione: martedì 13 maggio 2014, 11:52

Re: [bash] verifica e inserimento stringa in un file

Messaggio da piccolotauro2 »

Grazie.
Ma riguardo il discorso sotto ti viene in mente qualcosa?
grazie

Il mio obiettivo è dato un xml con:

<Realm className=testo1>

ottenere un xml con:

<Realm className=testo1>
<Realm className=testo attributo2=testo2>
Avatar utente
tomm
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 796
Iscrizione: lunedì 15 ottobre 2007, 10:16
Desktop: Gnome
Distribuzione: Ubuntu 16.04

Re: [bash] verifica e inserimento stringa in un file

Messaggio da tomm »

xmlstarlet implementa xpath che è un linguaggio per interrogare xml molto potente. Se devi continuare a lavorare con xml non puoi fare a meno di studiarti bene il linguaggio xpath. Puoi cominciare qui: http://www.w3schools.com/XPath/

Nel caso specifico, puoi cercare il nodo che ti interessa con questa sintassi:
xmlstarlet ed -L -i "/Server/Service/Engine/Realm[@className='testo2']" -t attr -n attributo2 -v testo2 server.xml
questo ti inserisce l'attributo solo al nodo /Server/Service/Engine/Realm che contiene l'attibuto className='testo2'
piccolotauro2
Prode Principiante
Messaggi: 40
Iscrizione: martedì 13 maggio 2014, 11:52

Re: [bash] verifica e inserimento stringa in un file

Messaggio da piccolotauro2 »

xmlstarlet ed -L -i "/Server/Service/Engine/Realm[@className='testo2']" -t attr -n attributo2 -v testo2 server.xml

il problema è proprio questo....il className='testo2' lo devo creare
o meglio ne deve creare un altro perché già c'è className=testo1

quando creo un nuovo className=testo2 io vorrei:
<Realm className=testo1/>
<Realm className=testo2/>

mentre lui mi crea
<Realm className=testo 1 className=testo2>
e non c'è modo di non farglielo creare nuovo e non aggiornarlo
Avatar utente
tomm
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 796
Iscrizione: lunedì 15 ottobre 2007, 10:16
Desktop: Gnome
Distribuzione: Ubuntu 16.04

Re: [bash] verifica e inserimento stringa in un file

Messaggio da tomm »

Ma ti sei studiato xpath come ti avevo consigliato?

Comunque così crei un nuovo nodo:
xmlstarlet ed -L --subnode "/Server/Service/Engine" --type elem -n Realm -v "" server.xml
e così aggiorni solo il nodo che non ha ancora l'attributo.
xmlstarlet ed -L -i "/Server/Service/Engine/Realm[not(@className)]" -t attr -n className -v testo3 server.xml
nota la sintassi intuitiva: Realm[not(@className)]
piccolotauro2
Prode Principiante
Messaggi: 40
Iscrizione: martedì 13 maggio 2014, 11:52

Re: [bash] verifica e inserimento stringa in un file

Messaggio da piccolotauro2 »

la avevo trovata su un sito questa sintassi...ma da me non funziona
l'elemento lo creo ma poi il className non me lo inserisce

a questo punto mi viene il dubbio che possa essere la versione di xmlstarlet

grazie comunque di tutto
piccolotauro2
Prode Principiante
Messaggi: 40
Iscrizione: martedì 13 maggio 2014, 11:52

Re: [bash] verifica e inserimento stringa in un file

Messaggio da piccolotauro2 »

rettifico funziona:)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti