【发布时间】:2015-07-08 17:51:30
【问题描述】:
我有一个带有以下 URL 的 XML 提要,其中包含要检索的行程 ID。
http://www.expeditiontrips.com/xml/triplist.xml
可以从以下 URL 中检索基于每个行程信息,其中 ID 成为 XML 名称
http://www.expeditiontrips.com/xml/trips/3481.xml
现在,如果您查看http://www.expeditiontrips.com/xml/trips/3481.xml 链接,您会看到添加节点下有一个添加,其标签名为“JRO Teaser”。我需要做的是解析这两个文件并显示具有此“JRO Teaser”标签的行程列表。包含此附加内容的旅行是折扣旅行。我编写了一个代码,它可以检索列表,但问题是因为第一个 XML 文件中有 518 个节点,加载页面需要 5 分钟。换句话说,由于编号很大,它需要花费太多时间来显示结果。的旅行。有人可以为我提供一种在没有太多加载时间的情况下正确显示这一点的方法。以下是我到目前为止的代码。
<?php
$ch = curl_init('http://www.expeditiontrips.com/xml/triplist.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_raw = curl_exec($ch);
curl_close($ch);
$trips = simplexml_load_string($xml_raw);
$total = count($trips);
for($a=0; $a<=$total; ++$a) {
$ch = curl_init('http://www.expeditiontrips.com/xml/trips/' . $trips->trip[$a] . '.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_raw = curl_exec($ch);
curl_close($ch);
$info = simplexml_load_string($xml_raw);
//print_r($info);
$name = 'JRO Teaser';
$tripss = $info->xpath("/trip/additions/addition/label");
if($tripss[1] == 'JRO Teaser') {
echo $info->code;
}
}
?>
【问题讨论】:
-
有什么方法可以只解析具有 JRO Teaser 标签的项目,而不是解析所有值并仅显示具有它的值
-
加载到 simplexml 和 xpath 会占用大量时间。 xmlreader 逐个标签读取。您可以通过它找到所需的片段。如果需要,可以进行一些处理,甚至将此片段加载到 simplexml。
标签: php xml xpath xml-parsing