0

我正在阅读来自不同网站的 3 或 4 个新闻 RSS 提要,并将它们合并到 yahoo 管道中。我从每个新闻项目中显示一个图像。现在我面临两个问题。

1> 图像在不同提要的不同标签中提供。图像的不同标签是:

<media:content medium="image" url="http://metrouk2.files.wordpress.com/2013/08/1000x67025.jpg?w=150&amp;h=150&amp;crop=1">
<media:title type="html">Liverpool v Stoke City - Premier League</media:title>
</media:content>

从另一个提要:

<media:thumbnail height="340" link="" url="http://www.chelseafc.com/javaImages/4a/7c/0,,10268~12155978,00.jpg" width="640"/

另一个提要:

<enclosure length="150" type="image/jpeg" url="http://u.goal.com/187200/187249_thumb.jpg"/>

2> 此外,在某些提要中,我得到 3 或 4 个媒体:内容数据,其中一些不是图像,而是 mp3 文件。甚至与新闻项目相关的图像也不在固定位置。有时是第四媒体:内容有时是第一。

对于第一个问题,我正在评估来源并根据客户端的来源提取信息,但我不想这样做,因为我想在未来添加更多提要,我真的不想明确处理所有这些来源在客户端。

对于第二个问题,我很无奈……我只是在显示第一个媒体:内容有时会给我正确的图像,有时却没有。

另外需要指出的是,yahoo pipe 正确执行它并根据 yahoo pipe 面板中的新闻项显示相关图像。

我真的很挣扎。请为此指出正确的方向。

4

1 回答 1

0

第一个问题很简单。对于每个输入提要,使用重命名运算符重命名或将 dom 元素复制到您的统一格式。然后在合并所有修改后的输入字段后,您可以使用统一的名称。

第二个问题很棘手。我通常通过使用像这样的Rename + Regex + Loop(String Builder)运算符来解决这种情况:

  1. 重命名相关字段,以便它们以后更易于使用,例如:

    • 重命名item.div.div.0.div.div.a.hreflink0
    • 重命名item.div.div.1.div.div.a.hreflink1
    • 重命名item.div.div.2.div.div.a.hreflink2
    • ...
  2. 使用Regex,尝试使不相关link0link1为空,例如:

    • 取而代之的item.link0^.*[^/]$
    • 取而代之的item.link1^.*[^/]$
    • 取而代之的item.link2^.*[^/]$
    • ...

    正确的正则表达式将取决于您的用例。在我的示例中,这适合使不相关的元素为空。

  3. 使用带有String Builder的Loop ,我连接并将结果分配给.item.link0item.link1item.link

结果,无论link0, link1, ... 有正确的链接,因为所有其他人都被清空了,所以连接的值将是正确的。

这是一个黑客,但它可以工作。我在一些管道中积极使用这种技术。棘手的部分是想出正确的正则表达式来使不相关的值变为空白。

于 2013-08-19T19:15:19.803 回答