我有一个xml feed我正在使用PHP解压缩,我编写的代码用于查找我需要的值并在页面上正确显示。
XML代码是:
<Agents>
<Agent>
<id></id>
<description></description>
<name></name>
</Agent>
</Agents>
PHP代码
<?php
$url = "urlgoeshere";
$xml = simplexml_load_file($url);
for ($html = "", $i = 0; $i < 10; $i++)
{
$id = $xml->Agent[$i]->id;
$name = $xml->Agent[$i]->name;
$description = $xml->Agent[$i]->description;
$html .= "<h1>$id</h1><h2>$name</h2><p>$description</p>";
}
echo $html;
这设置为加载11个代理工作正常,但我想更改它,并根据其ID加载一个特定的代理。
因此,例如,如果某个代理在xml字段上的id为1200,我想找到它并仅加载那个代理,但似乎无法解决这个问题。
答案 0 :(得分:0)
只需使用if
continue
条件
$idToFind = 1200;
for ($i = 0; $i < 10; $i++) {
$id = $xml->Agent[$i]->id;
if ($id != $idToFind)
continue;
else {
$name = $xml->Agent[$i]->name;
$description = $xml->Agent[$i]->description;
$html .="<h1>$id</h1><h2>$name</h2><p>$description</p>";
}
}
答案 1 :(得分:0)
您有两种选择。要么过滤客户端(在代码中),要么过滤服务器端。
服务器端
如果您请求XML文件,例如从RESTfull service您可能希望将参数直接传递给您的请求。
您可以申请example.com/agents.xml
或类似的内容,而不是请求example.com/agents/1.xml
。在这种情况下,您必须检查您从中请求XML文件的API。此类过滤的专业人员是,您必须加载较小的数据和流量的xml文件。
客户端
如果您无法过滤服务器端的数据,则需要在PHP代码中进行检查。最简单的选择是在循环中添加if
语句。既然你正在谈论1200个代理商,它可能是最容易的。如果您需要加载更多条目,或者您的应用程序需要速度和效率,您可能需要使用另一个XML解析器。 SimpleXML类将整个文件加载到CPU中。我写了一个相对有效的方法to parse an XML file with the XML Reader,它更有效,需要更少的内存。您可以随意编辑示例以满足您的需求。