que tienen una estructura similar a la siguiente:Xpath: Seleccionar nodo pero no en elementos secundarios específicos
<page id='1'>
<title>Page 1</title>
<page id='2'>
<title>Sub Page 1</title>
</page>
<page id='3'>
<title>Sub Page 2</title>
</page>
</page>
<page id='4'>
<title>Page 2</title>
</page>
tengo que seleccionar una determinada página Id pero si esa página tiene páginas descendientes que no quieren volver esos elementos, pero yo quiero los otros elementos de esa página. Si selecciono Página 1 Quiero volver título, pero no las páginas hijas ...
//page[@id=1]
Lo anterior me consigue la página 1, pero ¿Cómo excluir las páginas secundarias? Además, podría haber cualquier número arbitrario de elementos en una página.
//page[@id=1]/*[not(self::page)]
He encontrado que esto me da los datos que quiero. Sin embargo, esos datos vuelven como una matriz de objetos con un objeto por elemento y aparentemente excluyen los nombres de los elementos ???. Estoy usando PHP SimpleXML por lo que vale.
Buena pregunta, 1. Vea mi respuesta para una solución corta y simple. :) –
"Sin embargo, esos datos vuelven como una matriz de objetos con un objeto por elemento". ¿Cómo es eso diferente de lo que quieres/necesitas? – LarsH
Los datos vuelven en un formato diferente dependiendo de la consulta xpath, obtengo una matriz de SimpleXMLElement con una sola cadena en cada uno y me faltan los nombres de los elementos. El primer caso devuelve un único objeto SimpleXMLElement con todos los pares de valores clave esperados. No entiendo por qué, quizás abro otra pregunta. – Ben