0

我正在尝试将一个子元素添加到一个简单的 XML 对象,但是当该级别上已经存在具有相同名称的元素时,它不会被添加。

这是我正在尝试的:

$str = '<?xml version="1.0"?>
    <root>
        <items>
            <item></item>
        </items>
    </root>';

$xml = new SimpleXMLElement($str);
$xml->addChild('items');
print $xml->asXML();

当我真正想要的是第二个空项目元素时,我得到了与开始时完全相同的 xml。如果我使用另一个元素名称而不是添加它。

4

2 回答 2

1

使用此代码在您的示例中添加新项目节点:

$str = '<?xml version="1.0"?>
<root>
    <items>
        <item></item>
    </items>
</root>';

$xml = new SimpleXMLElement($str);
$xml->addChild('items', '');
var_dump($xml->asXML());

哪个输出:

string '<?xml version="1.0"?>
<root>
    <items>
        <item/>
    </items>
<items></items></root>
' (length=109)
于 2012-06-28T11:54:13.743 回答
0

你可以simpleloadxml用作替代品

$xml = simplexml_load_file("myxml.xml");
$sxe = new SimpleXMLElement($xml->asXML());
$itemsNode = $sxe->items[0];
$itemsNode->addChild("item", $newValue);
$sxe->asXML("myxml.xml"); 
于 2012-06-28T12:02:07.567 回答