php - 在 xml 之前插入 php

标签 php xml dom

第一次来这里: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) 会引发未找到错误!使用此代码...

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

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

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

..请帮忙:|

最佳答案

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

关于php - 在 xml 之前插入 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36059975/

相关文章:

javascript - 如何使用 $.ajax(); laravel 中的函数

php - 生成密码重置密码

javascript - 可展开横幅的标准 z 索引。

php - 除了导航栏之外,什么会导致 WordPress 管理屏幕空白?

php - 解析带括号的ini文件

android - 创建项目后首次构建时出错 : XML document structures must start and end within the same entity

java - 在标签之间添加逗号分隔值

python - python XML 解析存在一些问题

javascript - 自动选择带有文本字段的单选按钮?

javascript - ngRepeat/ngIf 改变 DOM 时的回调