Supondo que o XML esteja bem formado, como
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-service>
<service_info name="dummyapp" version="5.0"/>
<object name="WebApplications">
<item Location="dummyapp/ear/dummyapp.ear" name="dummy"/>
</object>
<object name="jdbc_oracle_nonxa">
<item db_name="MYDB1" db_user="dummyapp_user" global_trans="None" initial_size="10" jndi_name="dummyapp-aty-ds" max_size="25" name="dummyapp-aty-ds" statement_cache_size="10"/>
</object>
</weblogic-service>
(fechei tags que não foram fechadas na pergunta)
... então o seguinte irá gerar 25
(para este exemplo):
xml sel -t -v '//item/@max_size' -nl file.xml
Isso está usando o XMLStarlet para obter o valor do atributo max_value
de todos os item
nós. O -nl
no final insere uma nova linha após a saída.
Se precisar ser mais específico e olhar apenas para o nó item
no nó object
, cujo name
é jdbc_oracle_nonxa
:
xml sel -t -v '//object[@name="jdbc_oracle_nonxa"]/item/@max_size' -nl file.xml
Observe que o XMLStarlet está instalado como xmlstarlet
em vez de xml
em alguns sistemas.
Usando xmllint
(sem nova linha no final da saída):
xmllint --xpath 'string(//object[@name="jdbc_oracle_nonxa"]/item/@max_size)' file.xml