Usted puede use childNodes
. Esta es una propiedad de un elemento DOM que contiene una NodeList que contiene todos los elementos del elemento. Idealmente, podría hacer $el->childNodes->item(2)
(tenga en cuenta que está basado en 0, no en 1, por lo que 2 es el tercer elemento). Sin embargo, esto incluye nodos de texto. Por lo tanto, es difícil predecir qué número será tu nodo. Esta probablemente no es la mejor solución.
Puede ir con alexn's solution (getElementsByTagName('*')->item(2)
), pero una vez más esto tiene sus inconvenientes. Si sus nodos tienen nodos secundarios, también se incluirán en la selección. Esto podría descartar tu cálculo.
Mi solución preferida sería usar XPath: probablemente sea la solución más estable y no particularmente difícil.
Deberá haber creado un objeto XPath con $xpath = new DOMXPath($document)
en algún lugar, donde $document
es su instancia de DOMDocument. Voy a asumir que $el
es el nodo div padre, el "contexto" que estamos buscando en.
$node = $x->query('*', $el)->item(2);
Tenga en cuenta que, una vez más, estamos usando un índice de 0 a base de encontrar qué elemento en la selección que es. Aquí, estamos buscando nodos secundarios del nivel superior div
solamente, y *
selecciona solo nodos de elementos, por lo que los cálculos con nodos de texto son innecesarios.
es necesario utilizar getElementByTag ('div') y luego usar el getAttribute ('clase') y poner eso en si la condición para que coincida con class = 'prueba'. requiere un poco de RnD –
* (relacionado) * [Mejores métodos para analizar HTML] (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662) y [Pregunta Noob acerca de DOMDocument en PHP] (http://stackoverflow.com/questions/4979836/noob-question-about-domdocument-in-php/4983721#4983721) – Gordon
posible duplicado de [¿Cómo obtener el primer nivel de elementos dom por Domdocument PHP? ] (http://stackoverflow.com/questions/5882433/how-get-first-level-of-domy-elements-by-domdocument-php) – Gordon