我有一个XML提要,我正在从中检索数据。
我目前编写了代码来查找 ID,然后跳过它并显示所有其他结果。
XML 代码如下
<Agents>
<Agent>
<id></id>
<description></description>
<name></name>
</Agent>
</Agents>
当前 PHP 代码如下
<?php
$html = "";
$url = "xml feed";
$xml = simplexml_load_file($url);
$idToFind = 1922;
for ($i = 0; $i < 300; $i++) {
$id = $xml->Agent[$i]->id;
if ($id == $idToFind)
continue;
{
$id = $xml->Agent[$i]->id;
$name = $xml->Agent[$i]->name;
$html .= "<h2>$name</h2><h3>$id</h3>";}
echo $html;
?>
所以目前它找到 ID 1922 并排除它,但我想排除多个 IDS,即 1922、1845、2110 等。
一个
包含 id 的数组怎么样?
然后只需在每次迭代时检查 id 是否为"inArray"。
<?php
$html = "";
$url = "xml feed";
$xml = simplexml_load_file($url);
$idsToFind = array(1922, 1845, 1234, 8347 ... ...);
for ($i = 0; $i < 300; $i++) {
$id = $xml->Agent[$i]->id;
if (in_array($id, $idsToFind))
continue;
{
$id = $xml->Agent[$i]->id;
$name = $xml->Agent[$i]->name;
$html .= "<h2>$name</h2><h3>$id</h3>";}
echo $html;
?>
另一种方法是使用 xpath 查询来修改 xml 结果。
$str = "<Agents>
<Agent>
<id>1</id>
<description>a</description>
<name>a</name>
</Agent>
<Agent>
<id>2</id>
<description>b</description>
<name>b</name>
</Agent>
<Agent>
<id>3</id>
<description>c</description>
<name>c</name>
</Agent>
<Agent>
<id>4</id>
<description>d</description>
<name>d</name>
</Agent>
</Agents>";
$xml = simplexml_load_string($str);
$result = $xml->xpath('//Agent[not(id = 1 or id = 3)]');
echo "<pre>";
print_r($result);