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

时间:2016-06-14 08:37:55

标签: php xml feed

我有一个XML Feed,我正在从中检索数据。

我目前编写代码来查找ID,然后跳过它并显示所有其他结果。

XML代码在

之下
  <?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;

下面的当前PHP代码

{{1}}

&GT;

所以目前它找到ID 1922并将其排除,但我想排除多个IDS,即1922年,1845年,2110年等。

2 个答案:

答案 0 :(得分:0)

要排除ID的数组怎么样?
然后检查id是否为&#34; inArray&#34;每次迭代。

<?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;
?>

答案 1 :(得分:0)

另一种方法是使用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);