Xpoint
   [напомнить пароль]

PHP5 & XPath поиск и правка найденных узлов

Метки: [без меток]
2007-05-31 01:24:39 [обр] Александр Костюков[досье]
Можно ли в PHP5 при помощи xpath найти необходимые ноды в XML и, скажем, добавить к ним атрибут (с помощью create_attribute)?
спустя 7 часов [обр] Василий Свиридов(0/175)[досье]
Можно
спустя 6 часов [обр] Александр Костюков[досье]
) Как?
спустя 2 часа 48 минут [обр] Александр Костюков[досье]
Господа, реально интересно понять как. Потому что NodeList, который возвращает query (XPath) не поддерживает методы create_element и add_attribute.
спустя 56 минут [обр] Александр Лукьянов(221/781)[досье]
В PHP5 другие методы (DOM functions) - createElement и createAttribute. Получили NodeList, который содержит ссылки на нужные ноды, пробежались по нему, каждому добавили аттрибут.
спустя 18 часов [обр] Александр Костюков[досье]
сообщение промодерировано

Да парни. Разочарован.
Спасибо - разобрался. Тем кому понадобиться хочу помочь больше чем помогли мне)))

<?php
$xml_file = 'test_file.xml';

$dom = new DOMDocument;

if (!$dom->Load($xml_file)){
    echo 'file not loaded';
}

$xpath = new DOMXPath($dom);

$q_body = '/html/body';
$body = $xpath->query($q_body);

$new_p = new domElement('p', 'New Paragraph');
$add_p = $body->item(0)->appendChild($new_p);

echo $dom->saveXML();
?>

Примерно так. Правда надо быть уверенным что значение существует (проверяем lenght)

спустя 3 часа 11 минут [обр] Алексей Севрюков(14/1280)[досье]
Александр Костюков[досье] И где в Вашем коде ответ на Ваш же вопрос? Лично я не заметил что Вы какому то элементу добавляете аттрибут.
спустя 2 часа 9 минут [обр] Александр Лукьянов(221/781)[досье]
Александр Костюков[досье]
Пожалуйста. Вы готовое решение ждали? Была бы у Вас нетривиальная задача, Вам бы помогли, не сомневайтесь. А так — 5 минут на чтение подробной документации с примерами и все.
Без XPath тут можно, кстати, совершенно легко обойтись (если Вам конечно нужно именно то, что написано).
Powered by POEM™ Engine Copyright © 2002-2005