我想在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文件,所以我不知道如何解决这个问题。我该怎么做才能解决它?
答案 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');