Использование xpath на PHP: как выбрать первого ребенка? - PullRequest
2 голосов
/ 02 февраля 2010

У меня есть такая структура XML:

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

Как выбрать первый узел <layout> по его индексу, используя XPath?

w3schools указывает синтаксис, подобный /bookstore/book[1]/title, но тогда говорит :

Есть проблема с этим. В приведенном выше примере показаны разные результаты в IE и других браузерах.

В IE5 и более поздних версиях реализовано, что [0] должен быть первым узлом, но согласно стандарту W3C это должно было быть [1] !!

Обходной путь!
Чтобы решить проблемы [0] и [1] в IE5 +, вы можете установить SelectionLanguage на XPath.

Но это зависит от клиента. Руководство по PHP тоже не совсем ясно об этом.

1 Ответ

5 голосов
/ 02 февраля 2010

Как сказал Феликс: как насчет попытки?

$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();
}

отпечатки pattern. (php 5.3.1 / win32 / php.net build)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...