来自xml文件的php中的特定json数组

时间:2015-03-13 04:53:04

标签: php arrays xml json

在以下xml文件“catalog”中,每个图书ID都有5个变量。

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella</author>
      <title>XML Developer</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
   </book>
   <book id="bk102">
      <author>Ralls</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
   </book>
   <book id="bk103">
      <author>Corets</author>
      <title>Maeve Ascendant</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-11-17</publish_date>
    </book>
</catalog>

如何在php中获取特定Book id(即book id =“102”)的json数组。 我在网上搜索但是找不到所需方式的解决方案。 请问有谁能帮助我吗? xml文件: www.mywebsite.com/catlog.xml

$data = json_decode($json, true);  
  foreach ( $data['catlog'] as $row ) {  
                        if ($row['book id'] =='102') { 
                          // do the work here
                   }
         }

2 个答案:

答案 0 :(得分:0)

你实际上无法做到这一点。你可以做的更好的事情就是把它解析成simplexml然后遍历对象然后只要做一个计数器,如果特定对象已经具有&#34; 102&#34;

的属性

答案 1 :(得分:0)

我建议调试一下,用print_r找出键值&#39; book id&#39;有没有。它也将在稍后帮助遍历JSON结构。

    foreach ( $data['catalog'] as $row ) {  
        if ($row['book id'] == '102') {
            // do the work        
        } else {
            // for debugging
            echo print_r($row, true);
        }
    }

我也注意到你拼错了目录... $ data [&#39; catlog&#39;]到$ data [&#39; catalog&#39;];