J'ai ce code:DomXML xpath que dois-je faire ensuite?
$reader = new DOMDocument();
$reader->loadHTML($shell);
$xpath = new DomXPath($reader);
$xpath->registerNamespace('html','http://www.w3.org/1999/xhtml');
$res = $xpath->query('descendant-or-self::*[contains(@class,"content")]');
print_r($res);
shell $ est juste une variable contenant le code html suivant:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en-us" />
<title>Hello World</title>
</head>
<body>
<div class="content">
Hello World!!
</div>
</body>
</html>
Si je ne me trompe pas la requête XPath:
descendant-or-self::*[contains(@class,"content")]
est censé obtenir le div avec la classe "contenu". Cependant, lorsque j'imprime le tableau tout ce que je vois est un objet vide:
DOMNodeList Object
(
)
Est-ce que cela signifie que le travail na pas de requête? Le langage de requête DomXPath est-il différent de celui de SimpleXML Xpath, car la requête fonctionne avec SimpleXML?
Si cela fonctionne, comment afficher et modifier les nœuds correspondants?
Merci, La recherche fonctionne. Alors, comment puis-je modifier les attributs et les données des nœuds correspondants? –
Je dirais de regarder la spécification de 'DOMElement' sur http://www.php.net/manual/en/class.domelement.php, vous cherchez probablement la fonction' setAttribute', 'childNodes' propriété (aussi un DOMNodeList), le 'nodeValue' etc. L'API prend un peu de temps pour s'y habituer, mais c'est en grande partie l'API convenue, donc n'importe quelle amorce DOM (PHP ou autre) vous donnerait probablement un bon aperçu dans son fonctionnement (et vérifiez les commentaires dans le manuel PHP). – Wrikken