【问题标题】:Exclude Multiple Values from results in XML data从 XML 数据的结果中排除多个值
【发布时间】:2016-06-14 08:37:55
【问题描述】:

我有一个要从中检索数据的 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 等。

【问题讨论】:

    标签: php xml feed


    【解决方案1】:

    要排除 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;
    ?>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-03-06
        • 2018-12-19
        • 2017-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多