xml - regulares - XPath para seleccionar Elemento por valor de atributo
xpath value (2)
Tengo siguiente 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>
Quiero seleccionar el elemento Empleado con id = "4".
Estoy usando la expresión XPath debajo que no devuelve nada.
//Employee/[@id=''4'']/text()
Lo revisé en http://chris.photobooks.com/xml/default.htm y dice xpath no válido, no estoy seguro de dónde está el problema.
Debe eliminar el /
antes del [
. Predicados (las partes en [
]
) no deberían tener barras inmediatamente delante de ellos. Además, para seleccionar el elemento Employee en sí mismo, debe dejar el /text()
al final o, de lo contrario, solo estaría seleccionando los valores de texto en el espacio en blanco inmediatamente debajo del elemento Employee.
//Employee[@id=''4'']
Editar: como señala Jens en los comentarios, //
puede ser muy lento porque busca en todo el documento los nodos coincidentes. Si la estructura de los documentos con los que trabaja va a ser consistente, probablemente sea mejor que utilice una ruta completa, por ejemplo:
/Employees/Employee[@id=''4'']
Intenta hacer esto:
/Employees/Employee[@id=4]/*/text()