在SimpleXMLElement中向子项添加多个属性

时间:2013-09-04 13:33:25

标签: php xml

我想在SimpleXMLElement中为子项添加多个属性,所以它看起来像这样:

<data>
    <photo>
        <file size="3309519" size="JPG">P1270081</file>
    </photo>
</data>

就像我现在的代码一样,我只能为每个孩子添加一个属性,如下面的代码所示。

$xml = new SimpleXMLElement('<data/>');

$photo = $xml->addChild('photo');
$photo->addChild('file', 'P1270081')->addAttribute('size', '3309519');
$photo->addChild('uploaded', '2013-09-01 15:23:10')->addAttribute('by', 'edgren');

如果我将第三行更改为$photo->addChild('file', 'P1270081')->addAttribute('size', '3309519')->addAttribute('type', 'JPG');,我收到此错误消息:

Fatal error: Call to a member function addAttribute() on a non-object in ...

我不熟悉使用SimpleXMLElement动态创建XML文件,所以我不知道如何解决这个问题。我该怎么做才能解决它?

2 个答案:

答案 0 :(得分:4)

addAttribute返回void。如果你想添加更多属性,你必须这样:

$file = $photo->addChild('file', 'P1270081');
$file->addAttribute('size', '3309519');
$file->addAttribute('type', 'JPG');

答案 1 :(得分:0)

$ photo-&gt; addChild(..) //返回创建的XML组件..您可以直接将一个动作(一个)链接起来。
addAttribute(..)不会返回任何内容..因此,如果您尝试在其后链接事件,则会出现错误。

$photo = $xml->addChild('photo');
$photo->addChild('file', 'P1270081')->addAttribute('size', '3309519');
$theNewChild = $photo->addChild('uploaded', '2013-09-01 15:23:10')

$theNewChild ->addAttribute('by', 'edgren');
$theNewChild ->addAttribute('type', 'JPG');