Encontre o valor entre dois intervalos no arquivo xml de uma tag específica

0

Eu tenho um arquivo xml no qual tenho tags <a>0000123</a> , <a>1200000</a> , <a>0001000</a> .

Preciso obter apenas o valor que essa tag específica deve ter entre 100 e 1.000.

    
por Ugan 27.02.2018 / 14:32

2 respostas

1

Usando o XMLStarlet :

xml sel -t -v '//a[. > 100 and . < 1000]' -nl file.xml

Isso retornará uma lista de valores entre 100 e 1000. Esses valores serão obtidos a partir dos valores dos a nós do documento XML em file.xml , independentemente de onde eles aparecerem. Números preenchidos com zero parecem ser manipulados corretamente. O -nl no final garante que a última linha da saída tenha uma nova linha no final.

Em alguns sistemas, o XMLStarlet é instalado como xmlstarlet em vez de apenas xml .

Exemplo:

$ cat file.xml
<?xml version="1.0"?>
<root>
  <a>0000123</a>
  <a>1200000</a>
  <a>0001000</a>
</root>

$ xml sel -t -v '//a[. > 100 and . < 1000]' -nl file.xml
0000123
    
por 27.02.2018 / 14:40
1

Com :

xmllint --xpath '//a[text() > 100 and text() < 1000]/text()' file.xml

Se você deseja separar com novas linhas:

xmllint --shell file.xml <<< 'xpath //a[text() > 100 and text() < 000]/text()' |
    grep -oP 'content=\K.*'

AFAIK, é uma limitação de usar xmllint sem a opção --shell

    
por 27.02.2018 / 15:36

Tags