Php for循环中当前SimpleXMLElement对象的Xpath查询

Php for循环中当前SimpleXMLElement对象的Xpath查询,php,xpath,simplexml,Php,Xpath,Simplexml,如何在for循环中对当前SimpleXMLElement对象运行Xpath查询。比如说 <?php $xml = simplexml_load_string('<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title lang="eng">Harry Potter</title> <price>29.99</price&

如何在for循环中对当前SimpleXMLElement对象运行Xpath查询。比如说

<?php
$xml = simplexml_load_string('<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore> ');


foreach ($xml as $value) {
    $result = $value->xpath('//title');
    var_dump($result);
    break;
}
?>

array
  0 => 
    object(SimpleXMLElement)[189]
      public '@attributes' => 
        array
          'lang' => string 'eng' (length=3)
      string 'Harry Potter' (length=12)
  1 => 
    object(SimpleXMLElement)[188]
      public '@attributes' => 
        array
          'lang' => string 'eng' (length=3)
      string 'Learning XML' (length=12)
xpath('//title');
var_dump($结果);
打破
}
?>
排列
0 => 
对象(simplexmlement)[189]
公共'@attributes'=>
排列
'lang'=>字符串'eng'(长度=3)
字符串“哈利波特”(长度=12)
1 => 
对象(simplexmlement)[188]
公共'@attributes'=>
排列
'lang'=>字符串'eng'(长度=3)
字符串“学习XML”(长度=12)

这将输出两个book元素的结果,而我的意图是只显示第一个。我正在尝试仅对for循环中的$value对象运行查询,因为我可能希望对每本书运行不同的查询(因此它必须在一个循环中!)不是每本书上都有它当前正在做的事情。

//从当前节点中选择与所选内容匹配的节点,无论它们位于何处

当我运行查询以从根中选择所有节点时,我已经在所需节点(例如$value)中,因此从所有节点获取信息


由于我已经在所需的节点元素中,因此//将在当前节点上运行查询,以获得预期结果。

//从当前节点选择文档中与选择匹配的节点,无论它们位于何处

当我运行查询以从根中选择所有节点时,我已经在所需节点(例如$value)中,因此从所有节点获取信息


由于我已经在所需的节点元素中,因此//将在当前节点上运行查询,以获得预期结果。

您可以使用
表示当前节点。因此
/Foo
选择名为
Foo
的直接子代,而
//Foo
选择名为
Foo
的所有子代


如果没有点,则假定
/
引用文档的根,并选择整个文档中称为
Foo
的所有内容。

您可以使用
表示当前节点。因此
/Foo
选择名为
Foo
的直接子代,而
//Foo
选择名为
Foo
的所有子代


如果没有点,则假定
//
引用文档的根,并选择整个文档中称为
Foo
的所有内容。

//从根节点而不是从当前节点选择文档中的标记//从根节点而不是从当前节点选择文档中的标记