试图从一个RSS源
这解析图像和文字是线程这里的延续:Trying to Parse Only the Images from an RSS Feed试图从一个RSS源
这一次,我想从一个RSS feed解析图像和某些项目。 RSS提要的采样是这样的:
<channel>
<atom:link href="http://mywebsite.com/rss" rel="self" type="application/rss+xml" />
<item>
<title>Article One</title>
<guid isPermaLink="true">http://mywebsite.com/details/e8c5106</guid>
<link>http://mywebsite.com/geturl/e8c5106</link>
<comments>http://mywebsite.com/details/e8c5106#comments</comments>
<pubDate>Wed, 09 Jan 2013 02:59:45 -0500</pubDate>
<category>Category 1</category>
<description>
<![CDATA[<div>
<img src="http://mywebsite.com/myimages/1521197-main.jpg" width="120" border="0" />
<ul><li>Poster: someone's name;</li>
<li>PostDate: Tue, 08 Jan 2013 21:49:35 -0500</li>
<li>Rating: 5</li>
<li>Summary:Lorem ipsum dolor </li></ul></div><div style="clear:both;">]]>
</description>
</item>
<item>..
下面我有,我尝试解析图像和文字下面的代码:
$xml = simplexml_load_file('http://mywebsite.com/rss?t=2040&dl=1&i=1');
$descriptions = $xml->xpath('//item/description');
$mytitle= $xml->xpath('//item/title');
foreach ($descriptions as $description_node) {
// The description may not be valid XML, so use a more forgiving HTML parser mode
$description_dom = new DOMDocument();
$description_dom->loadHTML((string)$description_node);
// Switch back to SimpleXML for readability
$description_sxml = simplexml_import_dom($description_dom);
// Find all images, and extract their 'src' param
$imgs = $description_sxml->xpath('//img');
foreach($imgs as $image) {
echo "<img id=poster class=poster src={$image['src']}> {$mytitle}";
}
}
上面的代码精美提取图像....但是,当我尝试在我的代码的最后一行时,它不会提取$ mytitle(这将是“Article One”)标记。这应该是从RSS提要中的所有项目中提取的。
任何人都可以帮我找出这一个请。
非常感谢,
赫尔南
xpath()
总是返回一个数组(见http://www.php.net/manual/en/simplexmlelement.xpath.php),哪怕只是一个元素是结果。如果你知道你会期望一个元素,你可以简单地使用$mytitle[0]
。
您将不得不迭代每个<item/>
元素,否则您无法知道哪个说明和哪个标题属于一起。所以下面应该工作:
顺便说一句,我还添加了“”给你你<img/>
元素。我想你想要,因为这看起来非常像XML/HTML。
谢谢Dirkk ...我认为我们正在接近... RSSS有多个项目,我想刮。每个项目都有一个嵌入式“标题”和上面我的代码工作的图像。因此,在我的foreach中,我想刮掉并回显相应的图像以及Feed中每个项目的相应“标题”。您的代码为Feed中的所有商品返回了相同的标题。 – Hernandito
@Hernandito我更新了我的答案。您必须稍微调整程序的逻辑,否则描述和标题将始终彼此无关。您应该迭代每个“item”,然后查找所需的元素。 – dirkk
Dirkk ....它就像一个魅力!试图解决这个问题的2天试用和错误。非常感谢你!!! – Hernandito
XPath是正确的。也许你需要在'$ mytitle'上调用' - > nodeValue'来获取节点内容。 – helderdarocha
其实,因为你有很多'item'元素,你将需要使用' - > item(0)'来获得第一个元素。 – helderdarocha
谢谢Helderdarocha ......不幸的是,我的知识并不先进,我无法理解你的解释。问题是我必须提取字段内的内容以及字段中的内容。这将在RSS提要中重复多次,这正是我想要的。 –
Hernandito