Eu tenho seguido XML.
<?xml version="1.0" encoding="UTF-8"?>
<Employees>
<Employee id="3">
<age>40</age>
<name>Tom</name>
<gender>Male</gender>
<role>Manager</role>
</Employee>
<Employee id="4">
<age>25</age>
<name>Meghna</name>
<gender>Female</gender>
<role>Manager</role>
</Employee>
</Employees>
Quero selecionar o elemento Empregado com id="4".
Eu estou usando abaixo a expressão XPath que não está devolvendo nada.
//Employee/[@id='4']/text()
Eu verifiquei em http://chris.photobooks.com/xml/default.htm e diz xpath inválido, não tenho certeza onde está o problema.
Você precisa remover o /' antes do
[. Predicates (as partes em `[`
]) devemn't ter cortes imediatamente antes deles. Além disso, para selecionar o elemento Empregado em si, você deve deixar fora o
/text()` no final ou então você'estaria apenas selecionando os valores do espaço em branco imediatamente sob o elemento Empregado.
//Employee[@id='4']
Edit: Como Jens aponta nos comentários, //
pode ser muito lento porque procura por nós correspondentes em todo o documento. Se a estrutura dos documentos com os quais você'está trabalhando vai ser consistente, você provavelmente é melhor usar um caminho completo, por exemplo:
/Employees/Employee[@id='4']
A seguir, você poderia selecionar "todos os nós com um atributo particular" assim:
//*[@id='4']