utilizzando pattern xmllint riga di comando

]$ xmllint --version
xmllint: using libxml version 20626

Mio file xml simile a questa:

<projects>
 <architecture name="ARCH1">
  <project label="StringA1" type="StringB1" state="StringC1"/>
   ......
 </architecture>
 <architecture name="ARCH2">
  <project label="StringA2" type="StringB2" state="StringC2"/>
  ......
 </architecture>
</projects>

Per esempio, vorrei ottenere il valore StringB2 data la condizione name==ARCH2 e state==StringC2. È possibile l’utilizzo di xmllint opzioni della riga di comando, se sì, come ? Alcuni esempi di benefico.

Posso estrarre queste sed o awk ma che non può essere una buona soluzione.

OriginaleL’autore iamauser | 2013-08-22

2 Replies
  1. 4

    Uso:

    xmllint --xpath '//architecture[@name="ARCH2"]/project/@type'

    o se si desidera solo la stringa e la stringa:

    xmllint --xpath 'string(//architecture[@name="ARCH2"]/project/@type)'

    Durante la prova di questa affermazione ho capito che ubuntu (12.04) versione di xmllint (20708) termina con un segfault quando l’esecuzione di questo comando. Ho clonato la versione più recente dal https://git.gnome.org/browse/libxml2/refs/ e compilato. Ora il comando di cui sopra funziona.

    --xpath non è disponibile, nella versione che sto usando. Potete fornire il libxml versione che si sta utilizzando ?
    Sto usando xmllint versione 20708
    grazie. Io l’aggiornamento a una versione più recente di libxml e quindi confermare la tua risposta…
    Hmm, devo ammettere che non avevo testato questo prima di rispondere.. ora ho provato e avuto ‘segmentation fault’.. provare per ottenere una versione più recente

    OriginaleL’autore hek2mgl

  2. 3

    Provare le seguenti

    xmllint --xpath 'string(///project[../@name="ARCH1" and @state="StringC1"]/@type)' data.xml

    Versione:

    $ xmllint --version
    xmllint: using libxml version 20900
       compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib Lzma 

    OriginaleL’autore Mark O’Connor

Lascia un commento