Php for循环中当前SimpleXMLElement对象的Xpath查询
如何在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&
<?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
的所有内容。//从根节点而不是从当前节点选择文档中的标记//从根节点而不是从当前节点选择文档中的标记