[Risolto]Estrazione valori da nodi XML

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Metallkros
Prode Principiante
Messaggi: 21
Iscrizione: venerdì 10 luglio 2020, 10:52
Desktop: ubuntu
Distribuzione: Ubuntu 18.04.4 LTS

[Risolto]Estrazione valori da nodi XML

Messaggio da Metallkros »

Buonasera, sto creando uno script per estrarre alcuni valori dai nodi di un file xml tramite xmllint, ma ho un problema;

il file è il seguente:

Codice: Seleziona tutto

<Placemark>
		<name><![CDATA['Paperino-66869']]></name>
		<description><![CDATA[' nome: Paperino-66869 ID: 54:235:6234  Manuf: Unknown Type: Disney Channel: 11 Fumetto: <FONT color=red> paperinik+topolino -kindomhearts </FONT> Last time: Sat Apr 11 19:22:05 2020]]></description>
		<Point>
			<amico>pluto</amico>
		</Point>
	</Placemark>
ora ho creato queste tre costanti:

Codice: Seleziona tutto

TEST=$(xmllint --xpath "string(//name)" fileT.xml)
TEST2=$(xmllint --xpath "string(//amico)" fileT.kml)
TEST3=$(xmllint --xpath "string(//description)" fileT.xml)
la prima dà il seguente output:

Codice: Seleziona tutto

'Paperino-66869'
ed è ok;
La seconda dà:

Codice: Seleziona tutto

pluto
anche qui va bene;

il problema nasce con la 3a costante, questo è l'output:

Codice: Seleziona tutto

' nome: Paperino-66869 ID: 54:235:6234 Manuf: Unknown Type: Disney Channel: 11 Fumetto: <FONT color=red> paperinik+topolino -kindomhearts </FONT> Last time: Sat Apr 11 19:22:05 2020
è un problema perché vorrei che tutto il contenuto della 3a variabile fosse diviso es:
nome: Paperino-66869

ID: 54:235:6234

Manuf: Unknown

ecc..

come posso fare? ho pensato a l'utilizzo di comandi come cut, sed o awk, da inserire con un pipe ma facendo alcune prove non sono riuscito a venirne a capo.
qualche suggerimento?
Ultima modifica di Metallkros il sabato 29 maggio 2021, 15:32, modificato 2 volte in totale.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Estrazione valori da nodi XML

Messaggio da vaeVictis »

Il problema a mio avviso sono gli spazi nella stringa prima e dopo i due punti. Altrimenti potresti creare tranquillamente un Array associativo.
Ultima modifica di vaeVictis il domenica 9 maggio 2021, 10:41, modificato 1 volta in totale.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: Estrazione valori da nodi XML

Messaggio da UbuNuovo »

Avevo pensato di individuare i campi in base a 'TOKEN: TOKEN', andrebbe bene per tutti i campi eccetto che per "Last time", quindi ho sostituito lo spazio con l'underscore:

Codice: Seleziona tutto

 8-) str='nome: Paperino-66869 ID: 54:235:6234 Manuf: Unknown Type: Disney Channel: 11 Fumetto: <FONT color=red> paperinik+topolino -kindomhearts </FONT> Last time: Sat Apr 11'
 8-) sed 's/Last time/Last_time/;s/\w\+: /@&/g' <<< "$str" | awk -F"@" -v OFS="\n" '{print $1,$2,$3,$4,$5,$6,$7,$8}'| grep -v '^$'
nome: Paperino-66869 
ID: 54:235:6234 
Manuf: Unknown 
Type: Disney 
Channel: 11 
Fumetto: <FONT color=red> paperinik+topolino -kindomhearts </FONT> 
Last_time: Sat Apr 11 19:22:05 2020
o con AWK più generico:

Codice: Seleziona tutto

sed 's/Last time/Last_time/;s/\w\+: /@&/g' <<< "$str" | awk -F"@" -v OFS="\n" '{ for(i=1; i<=NF; i++) {print $i} }' | grep -v '^$'
Salva l'Ucraina! 🇺🇦
Avatar utente
Metallkros
Prode Principiante
Messaggi: 21
Iscrizione: venerdì 10 luglio 2020, 10:52
Desktop: ubuntu
Distribuzione: Ubuntu 18.04.4 LTS

Re: Estrazione valori da nodi XML

Messaggio da Metallkros »

Grazie a tutti, potete mettere in Risolto e chiudere :)
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Estrazione valori da nodi XML

Messaggio da vaeVictis »

Metallkros ha scritto:
venerdì 28 maggio 2021, 2:05
Grazie a tutti, potete mettere in Risolto e chiudere :)
Ciao. Lo devi mettere tu, [Risolto] nei titolo del primo messaggio della discussione.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
trekfan1
Moderatore Globale
Moderatore Globale
Messaggi: 23381
Iscrizione: domenica 21 maggio 2006, 10:51
Desktop: Gnome
Distribuzione: Ubuntu 23.10 e 24.04 (dev)
Sesso: Maschile
Località: Formigine (MO) | Accecante Asceta

Re: [RISOLTO]Estrazione valori da nodi XML

Messaggio da trekfan1 »

Il [Risolto] vuole messo evitando di scriverlo tutto maiuscolo, correggi, grazie :)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 9 ospiti