在PHP上使用xpath:如何选择第一个孩子?

问题描述:

我有这样一个XML结构:在PHP上使用xpath:如何选择第一个孩子?

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

我如何可以通过它的指数选择<layout>的第一个节点,使用XPath?

W3Schools的指示类似/bookstore/book[1]/title语法,但随后says

有一个问题与此有关。上面的例子在IE和其他浏览器中显示了不同的结果。

IE5和后来已经实施的是[0]应该是第一节点,但根据W3C标准它应该是[1]!

解决方法!
要解决IE5 +中的[0]和[1]问题,可以将SelectionLanguage设置为XPath。

但这是客户特定的。 PHP手册对此也不太清楚。

+3

关于尝试什么?如果'[1]'选择第一个节点,这就是它在PHP中的工作方式。只有两种可能性,所以这是不可能的。尝试和错误:) – 2010-02-01 23:26:55

就像Felix说的那样:试试怎么样?

$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编译)