在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手册对此也不太清楚。
答
就像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编译)
关于尝试什么?如果'[1]'选择第一个节点,这就是它在PHP中的工作方式。只有两种可能性,所以这是不可能的。尝试和错误:) – 2010-02-01 23:26:55