simplexml_load_file()给出错误:警告:simplexml_load_file()

时间:2014-04-02 08:36:08

标签: php xml simplexml

我从链接中获取XML文档,并且只要我使用simplexml_load_file(),它就会出现错误,说明 *警告:simplexml_load_file():https://kga-dev.mirakl.net/api/shops?:1:解析器错误:启动标记期望,'&lt ;”在第6行的C:\ wamp \ www \ merchants \ get_merchants.php中找不到

这是我的xml文件的一部分

<body>
<shops>
<shop>...</shop>
<shop>
<approval_delay xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<approval_rate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<order_messages_response_delay xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<banner xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<billing_info>
<bank_city xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<bank_name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<bank_street xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<zip_code xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<bic xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<iban xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<owner xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</billing_info>

这是我简单的PHP代码

<?php

    $apiLink = "https://kga-dev.mirakl.net/api/shops?";

    $xml=simplexml_load_file($apiLink);
    print_r($xml);

    //echo $xml->shop_id;

?>

3 个答案:

答案 0 :(得分:1)

您的代码

<approval_rate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>

使用单引号

<?php
  echo "<order_messages_response_delay xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:nil='true'/>";
?>

答案 1 :(得分:1)

您确定这与返回脚本的XML相同吗?请注意,您没有调用:1 - 我无法检查它是否需要授权,但在您给出的示例中,第7行没有错误,因此这意味着可能会返回其他内容,因为下面的代码可以工作:

<?php
$s = '<body>
    <shops>
        <shop>...</shop>
        <shop>
            <approval_delay xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
            <approval_rate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
            <order_messages_response_delay xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
            <banner xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
        </shop>
    </shops>
</body>';

$xml=simplexml_load_string($s);
print_r($xml);

&GT;

授权不是你的问题吗?我需要向您的网络服务授权:您是否以不同的方式处理您的IP或类似的事情?

答案 2 :(得分:1)

此问题的解决方案是,API提供JSON编码的字符串而不是XML字符串。因此无法使用SimpleXML解析传递的内容。尝试使用以下示例

$content = file_get_contents($apiLink);
$data = json_decode($content);

在这种情况下,$ data应该是一个包含api提供的所有数据的对象或数组。