【问题标题】:insertBefore xml php在xml php之前插入
【发布时间】:2016-03-17 12:00:18
【问题描述】:

第一次来这里: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>

我想在列表中的第一个“图像”之前插入新元素...

正确的做法是什么..??

我所有的尝试都是在“juiceboxgallery”之前或结束标记之后插入的。没有办法把它放在我想要的地方......

尝试使用 getElemtnstByTagName("image")->item(0) 获取第一个图像元素并执行 insertBefore($new_donde,$first_node) 会引发 Not Found 错误!使用此代码...

$nodo_zero=$doc->getElementsByTagName('image')->item(0);
$doc->insertBefore($nuevo_nodo,$nodo_zero);

.. 即使在检查我有“X”图像元素时:

$images=$doc->getElementsByTagName("image");
echo "<hr>imagenes: ".$images->length."<hr>"; 

..请帮忙:|

【问题讨论】:

    标签: php xml dom


    【解决方案1】:

    必须在父节点上调用 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);
    

    【讨论】:

    • 哦!我的!!! ... 非常感谢你 ThW .. 你拯救了我的一天!!它工作得很好......:o)..我尝试了第二种方式,现在我刚开始就得到了我的新图像!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2012-09-10
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多