PHP XML在另一个元素之后(或之前)插入元素

时间:2011-01-18 11:55:58

标签: php xml dom

我之前生成的XML如下:

<newsletter>

    <header>
        </magazine>
        </image>
        <strap/>
    </header>

    <intro>
        <date/>
        <text/>
        </edimg>
    </intro>

    <shop>
        <heading/>
        <article/>
        <title/>
        <img/>
        <link/>
        <excerpt/>
    </shop>

    <sidebar>
        <cover/>
        <cover_link/>
        <text/>
        <advert>
        <link/>
        <image/>
        </advert>
    </sidebar>

</newsletter>

我需要能够在<intro><shop>元素之间插入元素

这样:

$section = $dom->documentElement->appendChild($dom->createElement('section'));

只会在<newsletter>中创建元素。

我认为这会相当简单,但似乎无法找到解决方案。

感谢。

3 个答案:

答案 0 :(得分:5)

你可以试试这个;我没有测试它,但解决方案来自于使用insertBefore而不是appendChild。

$shop = $dom->getElementsByTagName("shop")->item(0);
$section = $dom->documentElement->insertBefore($dom->createElement('section'),$shop);

答案 1 :(得分:0)

获取<shop>节点并使用

而不是附加到documentElement

当您在商店节点中传递第二个参数时,也可以从DOMDocument执行此操作。就个人而言,我发现从商店节点更容易做到这一点,因为你无论如何都要拿它:

$shopNode->insertBefore($newNode);

答案 2 :(得分:0)

尝试

$section = $dom->documentElement->insertBefore(
    $dom->createElement('section'), 
    $shop)
);

其中$shop指向<shop>元素。