【问题标题】:Domdocument Load not loadingDomdocument 加载未加载
【发布时间】:2013-12-01 12:33:36
【问题描述】:

我正在尝试通过 url(即 rss)加载 xml 文件。 但是当我使用

$doc = new DOMDocument();
$doc->load($url);
if($doc->load($url,LIBXML_NOWARNING)===false)  
{   
    echo "Hello";
    //echo @$doc->load($url,LIBXML_NOWARNING);
    //exit;
    $error = $doc->load($url);
    print_r($error);exit;
}

它只打印 Hello.. 第 2 行没有显示警告。

请为我提供解决方案,以解决我什么也没得到时发生的错误。

【问题讨论】:

    标签: php xml-parsing domdocument


    【解决方案1】:

    那是因为渲染的内容是不可见的。尝试在浏览器上按 Ctrl+U

    另外,用var_dump代替print_r

     $error = $doc->load($url);
             var_dump($error);
    

    编辑:

    所以看起来你的$doc->load 一开始就失败了。您需要将 if 语句更改为

    if($doc->load($url,LIBXML_NOWARNING)===true) // Replaced false with true.  
    

    或者干脆

    if($doc->load($url,LIBXML_NOWARNING))
    

    您的 XML 加载失败,这就是它进入 if 语句的原因。检查网址是否拼写正确或检查网址是否真的存在。

    【讨论】:

    • 好的,通过使用 var_dump.... 它显示 bool(false)。我正在尝试找出错误所在。
    • 你能告诉我如果它在第 2 行失败,那么为什么它没有显示任何错误?
    • 你能在这里分享网址吗?
    • 哦!我发现RSS源代码第82行包含特殊字符的问题是什么。你能帮忙解决一下吗?
    【解决方案2】:

    echo "Hello";之后的代码中删除exit;这就是原因

    【讨论】:

    • 哦,对不起.. 只是一个拼写错误...我在 echo "hello" 之后评论了 exit。
    【解决方案3】:

    尝试使用libxml_use_internal_errors() 捕获 XML 解析错误:

    <?php
    
    $doc = new DOMDocument();
    $doc->recover = true;
    
    libxml_use_internal_errors(true);
    
    $url = 'http://page2rss.com/rss/91a83628a27c43b6ab4f0b3959f69f5a';
    $doc->load($url);
    
    $errors = libxml_get_errors();
    
    foreach ($errors as $error) {
        printf("Error %d at line %d, column %d:\n\t%s\n",
            $error->code, $error->line, $error->column, $error->message);
    }
    
    libxml_use_internal_errors(false);
    
    // Error 9 at line 82, column 155:
    //     Input is not proper UTF-8, indicate encoding !
    // Bytes: 0xAE 0x20 0x28 0x52
    

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 2011-10-25
      • 2012-03-27
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多