PHP - SimpleXMLElement类型的重载对象与ArrayObject不兼容

时间:2015-08-20 08:54:15

标签: php simplexml

我希望能够将SimpleXMLElement Object用作关联数组 我正在尝试使用ArrayObject类转换它。

SimpleXMLElement对象中哪些内容不兼容ArrayObject类有什么特别之处?

注意:我可以通过其他方式转换它,但我很好奇为什么这种方法不起作用。

$dom = new DOMDocument();
$dom->loadHTML($html);
...
var_dump(new ArrayObject(simplexml_import_dom($dom)));

给我:未捕获的异常'InvalidArgumentException',消息'SimpleXMLElement类型的重载对象与ArrayObject不兼容'

1 个答案:

答案 0 :(得分:0)

我认为你错了

$dom = new DOMDocument();
$dom->loadHTML("<html><body>Hello</body></html>");

$myArray = (Array)simplexml_import_dom($dom);

echo $myArray["body"]; //prints "hello"

<强>解释
ArrayObject假设获取一个对象并将其转换为数组。

  

使SimpleXMLElement工作的难点在于它感觉和行为就像一个对象,但实际上是一个系统RESOURCE(特别是一个libxml资源)。

编辑
将整个xml转换为数组:

$dom = new DOMDocument();
$dom->loadHTML("<html><body><div><span>Hello</span></div></body></html>");

$myArray = json_decode(json_encode(simplexml_import_dom($dom)),true);

print_r($myArray);

<强>结果:

Array
(
    [body] => Array
        (
            [div] => Array
                (
                    [span] => Hello
                )

        )

)