2016-03-17 3 views
1

первый раз здесь: о) ... нужна ваша помощь, так как это сводит меня с ума это далеко ... правый ..InsertBefore XML PHP

У меня есть этот 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> 

И я хочу вставить новые элементы непосредственно перед первым «изображением» в списке ...

Каков правильный способ сделать это .. ??

Все мои попытки вставляются непосредственно перед «соковой коробкой» или после закрытия тега. Нет способа разместить его там, где я хочу ...

Попытка получить первый элемент изображения с помощью getElemtnstByTagName ("image") -> item (0) и сделать insertBefore ($ new_donde, $ first_node), бросает мне Не найдена ошибка! с этим кодом ...

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

.. даже если cheking, что у меня есть элементы изображения 'X' с этим:

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

.. пожалуйста помощь: |

ответ

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); 
+0

OH! Мои !!! ... Спасибо тебе так много, что ты спас мой день! Это отлично работает ...: o) .. Я попробовал второй способ, и теперь я получаю свои новые изображения только в начале! –

Смежные вопросы