1

複数の属性を子に追加したいので、次のSimpleXMLElementようになります。

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

私のコードでは、以下のコードに示すように、子ごとに 1 つの属性しか追加できません。

$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');

3 行目を に変更すると、次の$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

0

$photo->addChild(..) // 作成された XML コンポーネントを返します..そして、アクション (1 つ) をその 1 つに直接連鎖させることができます。
しかし、 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 に答える