1

我想为一个孩子添加多个属性,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 文件的新手,所以我不知道如何解决这个问题。我应该怎么做才能修复它?

4

2 回答 2

4

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

$file = $photo->addChild('file', 'P1270081');
$file->addAttribute('size', '3309519');
$file->addAttribute('type', 'JPG');
于 2013-09-04T13:43:20.400 回答
0

$photo->addChild(..) // 返回创建的 XML 组件 .. 并且您可以将 action(one) 直接链接到它。
但是 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');
于 2013-09-04T13:48:40.753 回答