Domdocument加载未加载

时间:2013-11-18 11:16:41

标签: php xml-parsing domdocument

我试图通过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行没有显示警告。

请告诉我解决方案,因为我什么都没得到,会发生哪些错误。

3 个答案:

答案 0 :(得分:0)

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

此外,而不是print_r尝试使用var_dump

 $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语句的原因。检查网址拼写是否正确,或检查网址确实是否存在。

答案 1 :(得分:0)

exit;之后的代码中移除echo "Hello";

答案 2 :(得分:0)

尝试使用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