Implementations de XPath et DOM - PHP - Programmation
MarshPosté le 18-02-2005 à 19:27:52
Bonjour. J'ai actuelement deux problèmes avec les implémentations PHP de DOM et XPath.
Tout d'abord, l'objet NodeList de DOM. Les spécifications du W3C ( http://www.w3.org/TR/2000/REC-DOM-Level-2-...ml#ID-536297177 ) indiquent bien que la methode item() doit retourner un autre objet, de type Node. Ce code devrait donc logiquement retourner DOMNode
Code :
$tree = new DomDocument();
$tree->load('./res/file.xml');
$list = $tree->getElementsByTagName('entry');
echo get_class($list->item(0));
Or, c'est DOMElement que je recoit à la place.
Le deuxième problème est avec les expressions XPath. Toute requête mentionnant le nom d'un élément ne retroune aucun résultat. Exemple :
Code :
$tree = new DomDocument();
$tree->load('./res/file.xml');
$xpath = new DomXPath($tree);
$list = $xpath->query('//entry');
echo $list->length;
Ce code renvoit 0 à l'écran alors que l'élément <entry> existe bel et bien (voir premier exemple ci-dessus). Une requête du style //* marche parfaitement bien et renvoit tous les noeuds du document, par contre.
Voilà, j'espère que quelqu'un arrivera à me sortir du brouillard, parce que j'ai beau chercher, je ne trouve pas vraiment de solution au problème. Je précise que je travaille avec PHP 5.0.3 et l'extension DOM (pas DOM XML de PHP4, donc).
EDIT : problème résolu pour XPath. L'erreur venait d'un espace de nommage mal déclaré.
Marsh Posté le 18-02-2005 à 19:27:52
Bonjour. J'ai actuelement deux problèmes avec les implémentations PHP de DOM et XPath.
Tout d'abord, l'objet NodeList de DOM. Les spécifications du W3C ( http://www.w3.org/TR/2000/REC-DOM-Level-2-...ml#ID-536297177 ) indiquent bien que la methode item() doit retourner un autre objet, de type Node. Ce code devrait donc logiquement retourner DOMNode
Or, c'est DOMElement que je recoit à la place.
Le deuxième problème est avec les expressions XPath. Toute requête mentionnant le nom d'un élément ne retroune aucun résultat. Exemple :
Ce code renvoit 0 à l'écran alors que l'élément <entry> existe bel et bien (voir premier exemple ci-dessus). Une requête du style //* marche parfaitement bien et renvoit tous les noeuds du document, par contre.
Voilà, j'espère que quelqu'un arrivera à me sortir du brouillard, parce que j'ai beau chercher, je ne trouve pas vraiment de solution au problème. Je précise que je travaille avec PHP 5.0.3 et l'extension DOM (pas DOM XML de PHP4, donc).
EDIT : problème résolu pour XPath. L'erreur venait d'un espace de nommage mal déclaré.
Message édité par Tchyo le 18-02-2005 à 21:47:30