一个接口,返回的是xml格式,我使用DOMDocuments 的load方法去加载XML的时候,提示:Warning: DOMDocument::load(): XML declaration allowed only at the start of the document in URL, line: 2 in D:\phpenv\apache\htdocs\\test.php on line 5 bool(false)
代码:
<?php
$doc = new DOMDocument();
$XML_URL="url"; 
  
   // $db = $doc->load($XML_URL); 
var_dump($db);
if ($db){ 
var_dump($db); $dictArray = $doc->getElementsByTagName("error");
//echo utf8_decode($dictArray->item(0)->nodevalue);        } 
url是一个调用的接口

解决方案 »

  1.   

    错误提示已经告诉你答案了。xml的声明只能出现在文档的开头。
    那个url返回的文档第一行是个换行,声明被挤到第二行去了。
    先获取那个文档内容,去掉那个换行就行了,比如用trim()函数处理下.
      

  2.   

    load方法的参数是XML格式的String,你的调用不符合函数要求。
      

  3.   

    是男人就用 simpleXML.
    哈哈
      

  4.   

    $sm = simplexml_load_string($xml);
    var_dump($sm);男人也不行的。我试了下那个接口在IE下能打开,但是在FF和chrome下都报了错
      

  5.   


    那就是接口本身的数据格式有问题,如果你能改接口的话,检查一下接口文档是不是UTF格式,注意要无BOM头。
      

  6.   

    那个接口使用FF和chrome打开的话,直接就报:
    XML解析错误:XML 或文本声明不在实体的开头 
    位置:url行:2,列:1:<?xml version="1.0" encoding="GBK"?>

    ,不过接口是淘宝提供的,据说还是从10年就开始在跑的,我只能怀疑自己哪没弄对,
      

  7.   

    IE能打开,但是解析的话就报一个“文档的顶层无效”的错误,我是使用的是
    $xml = file_get_contents($url);
    $res = simplexml_load_string($out);
    var_dump($res);
    我解析别的接口是可以解析的,不知道这个是哪弄的不对。
      

  8.   

    上面的代码贴错了,重贴一份:
    $xml = file_get_contents($url);
    $res = simplexml_load_string($xml);
    var_dump($res);
      

  9.   

    上面的代码有点笔误:
    $xml = file_get_contents($url);
    $res = simplexml_load_string($xml);
    var_dump($res);
      

  10.   

    你不给出真实的 url ,如何知道是你的原因还是对方的原因
      

  11.   

    问题已解决,接口输出XML之前先输出了一个空行,谢谢各位大哥大姐捧场,分不多,意思意思哈