我想循环浏览以下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'
整个文件。我也尝试过: -
{{1}}
答案 0 :(得分:4)
这是正确的结果,因为您在原始xpath
上使用了第二个$xml
调用,这是整个XML文档的SimpleXMLElement。
要获取每本书单的书籍,只需按以下步骤进行迭代:
$booklists = $sxe->xpath('//book_list');
foreach ($booklists as $booklist) {
foreach ($booklist->book as $book) {
echo $book->asXML();
}
}