-1

所以我有以下xml结构:

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

我想用 PHP 添加另一个“属性”子项。一个例子可能是:

<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>孩子中添加它。

有人能帮我吗?

4

2 回答 2

0

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

使用xpath().

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

这是phpfiddle

于 2013-02-09T15:09:31.037 回答
0

如果要将孩子添加到特定元素,则必须这样说:

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

在线演示

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

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

在线演示

于 2013-02-10T21:55:38.673 回答