我有一个看起来像这样的 xml 提要:
<?xml version="1.0" encoding="UTF-8"?>
<books version="1.0">
<book>
<NR><![CDATA[1]]></NR>
<title><![CDATA[somebook]]></title>
<picture><![CDATA[http://www.website.com/images/somebook_pic.jpg]]></picture>
</book>
</books>
还有一个不起作用的 php 循环:
<?php
$file = "books.php";
$html = "";
$url = "http://www.website.com/feed/feed.xml";
$xml = simplexml_load_file($url);
for($i = 0; $i < 10; $i++){
$number = $xml->book[$i]->NR;
$img = $xml->book[$i]->picture;
$title = $xml->book[$i]->title;
$html .= "<img src='"$img'">$title - $number</a>";
}
file_put_contents($file, $html);
?>
当该 XML 源没有 ![CDATA[,不幸的是他们改变了它(我不知道为什么),现在它不起作用。
XML 源更新:
<?xml version="1.0" encoding="UTF-8"?>
<books version="1.4">
<category name="science-fiction">
<book>
<NR><![CDATA[1]]></NR>
<title><![CDATA[somebook]]></title>
<picture><![CDATA[http://www.website.com/images/somebook_pic.jpg]]></picture>
</book>
<book>
<NR><![CDATA[2]]></NR>
<title><![CDATA[somebook2]]></title>
<picture><![CDATA[http://www.website.com/images/somebook2_pic.jpg]]></picture>
</book>
</category>
</books>
你不是在迭代<category>
元素;这应该有效:
$books = simplexml_load_string($xml);
$html = '';
foreach ($books->category->book as $book) {
$html .= sprintf('<img src="%s">%s - %s</a>',
htmlspecialchars($book->picture, ENT_QUOTES, 'UTF-8'),
htmlspecialchars($book->title, ENT_QUOTES, 'UTF-8'),
htmlspecialchars($book->NR, ENT_QUOTES, 'UTF-8')
);
}
echo $html, PHP_EOL;
演示