Correcta eliminación de elementos secundarios en PHP utilizando DOMDocument y DOMXPath
-
26-09-2019 - |
Pregunta
Esta fue otra pregunta anterior, pero no vamos a hablar de eso. Estoy aislar un número de secciones de un documento HTML terceros. Cuando coinciden con alguna, lo que necesito para eliminar ciertas etiquetas del resultado. El código que encontré para esto en SO era:
$name = $xpath->query("//div[@class='leftColBig']//h3")->item(0);
// remove <span>
foreach($xpath->query("//span", $name) as $node)
$node->parentNode->removeChild($node);
Esto tiene el efecto secundario desafortunado de no sólo de eliminar el hijo de $ nombre, sino a toda la DOMDocument :( ¿Cómo puede aislar el I removeChild sólo para la sección encontré utilizando la consulta.
Solución
En lugar de:
$xpath->query("//span", $name)
Do:
$xpath->query("span", $name)
//nodename
coincide con todos los nodos no importa qué su padre es. $ ContextNode se ignora cuando su consulta comienza con //
.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow