从 XML 数据的结果中排除多个值



我有一个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);

最新更新