有没有办法在PHP中将XML文件转换为JSON?

13 浏览
0 Comments

有没有办法在PHP中将XML文件转换为JSON?

我正在尝试将我的xml getDetailsXML.php文件转换为JSON。我调用了我的service.php页面来处理对getDetailsXML.php的ajax请求。在service.php中,我将XML转换为JSON,然后将数据发送回以供显示。

我的service.php

从service页面获取详细信息的调用。

    function getDetails(itemName) {
        $.getJSON("service.php?ItemName=" + itemName, function(json){
            var descriptionDetails = "

描述:" + this.description + "" + "价格:" + this.price + ""; $("#detailsPane").append(descriptionDetails); var priceDetails = "价格:" + this.price + ""; $.each(json.resources, function () { var url = "

  • " + this.url + "
  • "; $("#detailsPane").append(url); }); }); }

    我的getDetailsXML.php文件

          
    "
    
     Pete Townshend曾在他自己的吉他在修理时弹奏过这把吉他,那时吉他上还有一些鼓组件
     5695.99
     
       http://www.thewho.com/
       http://en.wikipedia.org/wiki/Pete_Townshend
     
    ",
            'itemShades'    =>      
    "
    
     Yoko Ono的太阳镜。虽然可能不被披头士的粉丝所重视,但有传言称这副太阳镜曾被约翰·列侬舔过。
     258.99
     
       http://www.beatles.com/
       http://johnlennon.com/
       http://www.yoko-ono.com/
     
    ",
            'itemCowbell'   =>      
    "
    
     还记得著名的“多一点铃铛声”小品吗?这就是真正的铃铛。
     299.99
     
       http://www.nbc.com/Saturday_Night_Live/
       http://en.wikipedia.org/wiki/More_cowbell
     
    ",
            'itemHat'               =>     
    "
    
     迈克尔·杰克逊在“Billie Jean”音乐视频中戴的帽子。虽然不是真正的摇滚纪念品,但它闻起来比斯拉什的礼帽要好闻。
     
     1699.99
     
       http://www.michaeljackson.com/
       http://music.yahoo.com/vid-2143030--Billie-Jean
     
    ");
    header("Content-Type: text/xml");
    echo $details[$_REQUEST['ImageID']];
    ?>    

    0
    0 Comments

    有时候我们需要将一个XML文件转换为JSON格式的数据,这样可以方便地处理和使用。在PHP中,我们可以通过使用simplexml_load_string函数将XML文件加载为一个对象,然后使用json_encode函数将其转换为JSON字符串。

    以下是一个示例代码,展示了如何将XML文件转换为JSON格式的数据:

    $result = array_map(function($v){return simplexml_load_string($v, 'SimpleXMLElement', LIBXML_NOCDATA);},$details);
    echo json_encode($result);
    

    首先,我们使用simplexml_load_string函数将XML字符串加载为一个对象。这个函数的第一个参数是XML字符串,第二个参数是对象的类名,第三个参数是一个选项,用于指定如何处理CDATA部分。在这个示例中,我们使用了LIBXML_NOCDATA选项,表示不将CDATA部分作为独立的节点处理。

    接下来,我们使用array_map函数对XML对象数组中的每个元素应用一个回调函数。这个回调函数中,我们再次使用simplexml_load_string函数来将XML字符串转换为对象。

    最后,我们使用json_encode函数将XML对象数组转换为JSON格式的字符串,并使用echo语句将其输出。

    通过以上的步骤,我们就可以将一个XML文件转换为JSON格式的数据。这样,我们就可以方便地对XML数据进行处理和使用了。

    0