PHP XML编辑现有的xml并添加数据

时间:2013-02-09 14:58:34

标签: php xml simplexml

所以我有以下xml结构:

<Application>
        <Properties>
            <Property>
                <Name>blabla</Name>
                <Value>123</Value>
            </Property>
        </Properties>
</Application>

我希望用PHP添加另一个“Property”子项。 一个例子可能是:

<Application>
        <Properties>
            <Property>
                <Name>blabla</Name>
                <Value>123</Value>
                                <Name>example test</Name>
                <Value>another value</Value>
            </Property>
        </Properties>
</Application>

这是我目前的PHP代码:

<?php
    $xml = simplexml_load_file("Application.xml"); 

    $sxe = new SimpleXMLElement($xml->asXML()); 

    $properties = $sxe->addChild("Property");
    $properties->addChild("Name", "namehere"); 
    $properties->addChild("Value", "random value here"); 

    $sxe->asXML("Application.xml");
?>

但它只是将它添加到xml的末尾。在</Application>之后,这不是我们想要的。

我希望将其添加到<Property>孩子中。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

您需要在<Application>标记内遍历<Properties>标记。

使用xpath()

$propNode = $sxe->xpath('/Application/Properties');
$property = $propNode[0]->addChild('Property');

这是phpfiddle

答案 1 :(得分:0)

如果您想将您的孩子添加到特定元素,您必须这样说:

$properties = $sxe->Properties->addChild("Property");
                    ^^^^^^^^^^

Online Demo

如果有多个Properties元素并且您想要指定的不是第一个,则可以使用从零开始的数组索引,例如:第一个0(默认),第二个1

$properties = $sxe->Properties[1]->addChild("Property");

Online Demo