我之前生成的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>
中创建元素。
我认为这会相当简单,但似乎无法找到解决方案。
感谢。
答案 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>
元素。