第一次来到这里:o)...需要你的帮助,因为这让我疯狂到这么远......对..
我有这个xml结构:
<?xml version="1.0" encoding="UTF-8"?>
<juiceboxgallery galleryTitle="whatever">
<image imageURL="images/23.jpg" thumbURL="thumbs/23.jpg" linkURL="images/23.jpg" linkTarget="_blank" sourcePath="webadded"></image>
<image imageURL="images/24.jpg" thumbURL="thumbs/24.jpg" linkURL="images/24.jpg" linkTarget="_blank" sourcePath="webadded"></image>
... and so on ...
</juiceboxgallery>
我想在de first before&#39; image&#39;之前插入新元素。在名单上......
正确的做法是什么???
我所有的尝试都是在“juiceboxgallery”之前插入的。或者在结束标签之后。没办法把它放在我想要的地方......
尝试使用getElemtnstByTagName获取第一个图像元素(&#34;图像&#34;) - &gt; item(0)并执行insertBefore($ new_donde,$ first_node)会抛出一个未找到的错误!用这段代码......
$nodo_zero=$doc->getElementsByTagName('image')->item(0);
$doc->insertBefore($nuevo_nodo,$nodo_zero);
..即使在检查我有&#39; X&#39;图像元素:
$images=$doc->getElementsByTagName("image");
echo "<hr>imagenes: ".$images->length."<hr>";
..请一些帮助:|
答案 0 :(得分:2)
必须在父节点上调用insertBefore()和appendChild()等方法。文档本身也是一个节点。所以它有方法并允许添加多个节点,但只有一个元素节点。
在您的情况下,这里有可能的方法。
使用DOMNode::parentNode
属性
$nodo_zero = $doc->getElementsByTagName('image')->item(0);
$nodo_zero->parentNode->insertBefore($nuevo_nodo,$nodo_zero);
或者获取juiceboxgallery
节点并使用DOMNode::firstChild
属性。
$gallery = $doc->getElementsByTagName('juiceboxgallery')->item(0);
$gallery->insertBefore($nuevo_nodo, $gallery->firstChild);