1

我有一个包含交易的 XML 提要,我需要获取标题和图像。

我使用 xpath,这是一个示例:(/deals/deal/deal_title用于交易标题) /deals/deal/deal_image(用于交易图像)

问题是某些交易根本没有设置交易图像,因此当我将交易标题与交易图像链接时,有时会得到错误的图像。

为了追查问题,我创建了两个单独的数组:一个带有标题,另一个带有图像。

导致问题的奇怪之处在于,在图像数组上,空实例被移动到数组的末尾。

例如,如果我们假设“deal title2”没有图像而“deal title3”有图像,则“deal title3”图像用于“deal title2”。

使用此链接查看我制作的代码:http: //pastebin.com/HEuTJQjZ

有趣的部分开始于:$doc = new DOMDocument();

基本上它所做的是执行许多 xpath 查询来获取标题、图像、价格等,然后将它们添加到数据库中。

当交易没有设置标签时,问题就开始了,因此它只使用下一个值。

我不明白它如何神奇地将所有空实例移动到底部。Xpath 不应该对结果进行排序,对吗?

我什至尝试使用 [] 运算符来获取特定图像,但没有帮助,因为结果以错误的方式排序。

示例提要:http ://www.clickbanner.gr/xml/?xml_type=deals&affiliate_ID=14063

编辑:

真正的问题是 xpath 没有按文档顺序对结果进行排序,而是修改了预期的顺序。这是一个错误还是什么,或者有没有办法强制结果按文档顺序排序?另请参阅:XPath 查询结果顺序

先感谢您。

4

2 回答 2

1

$k为区间 中的任何值计算以下两个 XPath 表达式[1, count(/deals/deal)]

/deals/deal[$k]/deal_title

deals/deal[$k]/deal_image

通过这种方式,您知道是否选择了图像。

例如,如果count(/deals/deal)是 3,那么您将评估这些 XPath 表达式

  • /deals/deal[1]/deal_titledeals/deal[1]/deal_image

  • /deals/deal[2]/deal_titledeals/deal[2]/deal_image

  • /deals/deal[3]/deal_titledeals/deal[3]/deal_image

于 2012-07-28T21:22:21.587 回答
0

我认为您应该尝试这种方式:

  1. 演练/deal/deal_id标签值
  2. 当搜索一对标签时:/deal[/deal_id="$deal_id"]/deal_title/deal[/deal_id="$deal_id"]/deal_image(使用真正的 deal_id)代替$deal_id

您将获得每笔交易的交易标题和交易图像对,它们将匹配每个交易正确

于 2012-07-28T20:35:23.167 回答