我想循环遍历以下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();
}
}