我一直在阅读关于SimpleXML和其他一些东西,但我有一个我无法弄清楚的问题。
所以我有这个简单的几乎空的XML:
<?xml version="1.0" encoding="UTF-8"?>
<imageData>
</imageData>
我想要做的是每次单击按钮时,XML文档都会打开并附加一个新子项,所以它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<imageData>
<image id="myID"> <--- (Note the attribute in here)
<person>MyPersonName</person>
<number>MyNumber</number>
</image>
</imageData>
到目前为止,我已经能够使用类似的东西使它工作了一些,但我似乎无法找到一种方法将属性附加到图像标记,我需要能够插入不同的子图像'images'标签基于ID属性,因为我对如何在外部XML文档上使用$xml=new SimpleXMLElement($imageData);
函数感到非常困惑:
$xml = simplexml_load_file('myXML.xml');
$xml->addChild('image'); <--Want to add an id="myID" attribute to this child
$xml->image->addChild('person', 'myPersonName'); <--Want to add this child to the image tag with the attribute I added up there)
$xml->image->addChild('number','Mynumber');
file_put_contents('myXML.xml', $xml->asXML());
非常感谢任何帮助或指向正确的方向。
答案 0 :(得分:1)
您不想使用新的SimpleXMLElement语法。只是做
$xml->image->addAttribute('id', 'myID');
答案 1 :(得分:1)
SimpleXMLElement::addChild()将新创建的元素作为另一个可以处理的SimpleXMLElement实例返回
<?php
$imageData = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><imageData />');
onClick( $imageData ); echo $imageData->asXML(); echo "\r\n----\r\n";
onClick( $imageData ); echo $imageData->asXML(); echo "\r\n----\r\n";
onClick( $imageData ); echo $imageData->asXML(); echo "\r\n----\r\n";
onClick( $imageData ); echo $imageData->asXML(); echo "\r\n----\r\n";
function onClick($imageData) {
static $id = 0;
$img = $imageData->addChild('image');
$img['id'] = ++$id;
$img->person = 'person #'.$id;
$img->number = '47'.$id;
}
打印
<?xml version="1.0" encoding="UTF-8"?>
<imageData><image id="1"><person>person #1</person><number>471</number></image></imageData>
----
<?xml version="1.0" encoding="UTF-8"?>
<imageData><image id="1"><person>person #1</person><number>471</number></image><image id="2"><person>person #2</person><number>472</number></image></imageData>
----
<?xml version="1.0" encoding="UTF-8"?>
<imageData><image id="1"><person>person #1</person><number>471</number></image><image id="2"><person>person #2</person><number>472</number></image><image id="3"><person>person #3</person><number>473</number></image></imageData>
----
<?xml version="1.0" encoding="UTF-8"?>
<imageData><image id="1"><person>person #1</person><number>471</number></image><image id="2"><person>person #2</person><number>472</number></image><image id="3"><person>person #3</person><number>473</number></image><image id="4"><person>person #4</person><number>474</number></image></imageData>
----