我目前正在重写一个处理xml文件的类。 根据xml文件及其结构,我有时需要合并对象。
让我说一旦有了这个:
<page name="a title"/>
另一次我有这个:
<page name="a title">
<permission>administrator</permission>
</page>
之前,我只需要“page”元素中的属性。这就是为什么我的很多代码都希望一个对象只包含属性($ loadedXml-&gt; attributes())。
现在有xml文件在其中
<permission>
元素是必需的。
我确实设法合并了对象(虽然不是我想要的)但我无法访问其中一个(很可能是我缺少的东西)。
为了合并我的对象,我使用了这段代码:
(object) array_merge(
(array) $loadedXml->attributes(),
(array) $loadedXml->children()
);
这是我从print_r()得到的:
stdClass Object (
[@attributes] => Array ( [name] => a title )
[permission] => Array ( [0] => administrator )
)
所以现在我的问题是如何访问@attributes方法以及如何将数组从[@attributes]移动到主对象?
答案 0 :(得分:1)
可能的方式之一
$attr = '@attributes';
var_dump($obj->$attr);
将@attribute
移至属性
foreach ($obj->$attr as $key=>$val)
{
$obj->$key = $val;
}
unset($obj->$attr);