我想遍历以下xml文件中的每个book_list,并希望遍历该book_list的每本书的每个book_list。
<inventory>
<book_list>
<book>
<author>Rowling</author>
<title>Harry Potter</title>
</book>
<book>
<author>Blyton</author>
<title>Famous 5</title>
</book>
</book_list>
<book_list>
<book>
<author>Bloggs</author>
<title>Learning XML</title>
</book>
<book>
<author>Jones</author>
<title>Beginning PHP</title>
</book>
</book_list>
</inventory>
我如何针对每本book_list,在php simplexml脚本中使用xpath遍历每本书?这是我的代码,
$booklistpath = $xml->xpath('//booklist');
foreach ($booklistpath as $booklist) {
$bookpath = $xml->xpath('//book');
foreach ($bookpath as $book) {
...
}
}
第一个循环很好,它遍历每个
book_list
-但是嵌套循环(意味着该特定book
遍历每个book_list
遍历整个文档中的每一本书)。我也尝试过:-'.//book' and
'descendant::book'
最佳答案
这是正确的结果,因为您正在原始xpath
上使用第二个$xml
调用,该调用是整个XML文档的SimpleXMLElement。
要获取每个书目表的书,只需对其进行如下迭代:
$booklists = $sxe->xpath('//book_list');
foreach ($booklists as $booklist) {
foreach ($booklist->book as $book) {
echo $book->asXML();
}
}