2010-02-01 7 views
2

J'ai une structure XML comme celui-ci:Utiliser xpath sur PHP: comment sélectionner le premier enfant?

<layout> 
    <pattern> ... </pattern> 
    <row> ... </row> 
</layout> 

Comment puis-je choisir le premier noeud de <layout> par son index, en utilisant XPath?

W3Schools indique une syntaxe similaire à /bookstore/book[1]/title, mais says:

Il y a un problème avec cela. L'exemple ci-dessus montre des résultats différents dans IE et d'autres navigateurs.

IE5 et plus tard a implémenté que [0] devrait être le premier nœud, mais selon la norme W3C il aurait dû être [1] !!

Une solution de contournement!
Pour résoudre le problème [0] et [1] dans IE5 +, vous pouvez définir le langage SelectionHangath à XPath.

Mais c'est spécifique au client. Le manuel de PHP n'est pas très clair à ce sujet non plus.

+3

Qu'en est-il essayer? Si '[1]' sélectionne le premier noeud, c'est ainsi que cela fonctionne en PHP. Il n'y a que deux possibilités donc ce n'est pas impossible à faire. Essayez et erreur :) –

Répondre

5

Comme Felix a dit: Qu'en est-il essayer?

$l = new SimpleXMLElement('<layout> 
    <pattern> ... </pattern> 
    <row> ... </row> 
</layout>'); 
foreach($l->xpath('/layout/*[1]') as $n) {// yeah yeah, it's only one.... 
    echo $n->getName(); 
} 

imprime pattern. (php 5.3.1/win32/php.net build)

Questions connexes