-3

可能重复:一个简单的程序,用于 CRUD 节点和 xml 文件XPath 和 PHP
的节点值:没有正常工作

$XML = <<<XML
<items>
    <item id="123">
        <name>Item 1</name>
    </item>
    <item id="456">
        <name>Item 2</name>
    </item>
    <item id="789">
        <name>Item 3</name>
    </item>
</items>
XML;

$objSimpleXML = new SimpleXMLElement($XML);

echo $objSimpleXML->item[2]->name; // output: Item 3 (OK)
echo '<br><pre>';
print_r($objSimpleXML->xpath('./item[1]/name')); // output: empty Array!!!

你好!如何使用纯 xpath 查询获取“项目 3”作为输出?(我的提议输出一个空数组。)

4

1 回答 1

1

这是因为 xpath 集合索引是基于 1 的,而不是我们最熟悉的基于 0 的数组。

由于xpath 函数返回数组,因此无法Item 3使用纯 xpath 查询。您必须先存储结果并使用数组索引来访问元素。

$item = $objSimpleXML->xpath('./item[3]/name');
$str = $item[0];

从 W3C 的XPATH 1.0 规范中,这些被称为谓词

轴是正向轴或反向轴。仅包含上下文节点或按文档顺序位于上下文节点之后的节点的轴是正向轴。仅包含上下文节点或按文档顺序位于上下文节点之前的节点的轴是反向轴。因此,祖先轴、祖先或自我轴、前轴和前兄弟轴是反向轴;所有其他轴都是正向轴。由于 self 轴始终最多包含一个节点,因此它是正向轴还是反向轴都没有区别。节点集的成员相对于轴的接近位置定义为节点集中的节点位置,如果轴是正向轴,则按文档顺序排序,如果轴是反向文档顺序,则按文档顺序排序是反向轴。第一个位置是1.

于 2013-01-12T10:31:49.243 回答