我希望能够将SimpleXMLElement
Object用作关联数组
我正在尝试使用ArrayObject
类转换它。
SimpleXMLElement
对象中哪些内容不兼容与ArrayObject
类有什么特别之处?
注意:我可以通过其他方式转换它,但我很好奇为什么这种方法不起作用。
$dom = new DOMDocument();
$dom->loadHTML($html);
...
var_dump(new ArrayObject(simplexml_import_dom($dom)));
给我:未捕获的异常'InvalidArgumentException',消息'SimpleXMLElement类型的重载对象与ArrayObject不兼容'
答案 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
)
)
)