Minha situação é muito específica e sou iniciante com xmlstarlet .
Eu tenho um arquivo XML como o abaixo, que contém centenas de entradas.
<netbooks>
<file id="2">
<date>2008-06-04 16:40</date>
<author>Daniel</author>
<name bytes="422904" hash="383a39b183">New name of - Just an example.pdf</nome>
<name bytes="383135" hash="5a43dc3524">Just an example.pdf</nome>
</file>
</netbooks>
Onde raiz = marca de netbooks.
QUESTÕES
- Eu tenho o hash do arquivo
5a43dc3524
, quero pegar o valor da data , ou seja2008-06-04 16:40
. Qual é a maneira mais fácil de fazer isso? - Além disso, como obter o atributo
id
(ou seja2
) do elemento de arquivo ? Mais uma vez, eu tenho o hash, apenas isso.
Podemos obter a data usando a expressão xpath
//file[name/@hash="5a43dc3524"]/date/text()
. Supondo que o arquivodata.xml
contenha os dados de amostra da sua pergunta, se executarmos:Obtemos a saída:
A expressão
//file[name/@hash="5a43dc3524"]/date/text()
significa "encontrar todos os<file>
elementos que contêm um<name>
elemento no qual o valor dohash
atributo é5a43dc3524
. Para cada<file>
elemento, obtenha o valor do<date>
elemento contido e retorne seu valor de texto.Podemos fazer algo muito parecido: