从字符串加载XML

时间:2016-05-24 16:24:06

标签: php xml

我尝试从字符串加载XML,但是我得到一个空对象。

<?php
libxml_use_internal_errors(true);
$xml = simplexml_load_string($myXMLData);
if ($xml === false) {
    echo "Failed loading XML: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    print_r($xml);
    foreach($xml->{'reference:item'} as $item){
        echo $item->{'resource:local-description'};
    }
}
?>

$myXMLData and complete Code

输出为:“SimpleXMLElement Object()”。 为什么我没有错误,但对象仍然是空的?

2 个答案:

答案 0 :(得分:0)

如果将xml var更改为:

,则可以正常工作
$myXMLData = '
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<reference:reference

$myXMLData = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<reference:reference

它现在可能需要它是空的

答案 1 :(得分:0)

您应该阅读有关使用命名空间解析XML的信息。它与普通XML有很大不同。

作为第一次迭代,代码的else部分可以是这样的:

} else 
    foreach($xml->children('reference', true) as $item)
        if($item->getName() == 'item') 
           foreach($item->children('resource', true) as $desc)     
              if($desc->getName() == 'local-description')
                  echo $desc ."\n";   

demo