Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> xml/dom/изменение содержимого узла 
:(
    Опции темы
sgrebnev
Дата 7.8.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.4.2007

Репутация: нет
Всего: нет



вот xml к примеру:
Код

<?xml version="1.0"?>
<constants>
    <const id="0">
        <name>NUM_ROW_ON_PAGE</name>
        <value>5</value>
    </const>
    <const id="1">
        <name>SOME_CONS_ONE</name>
        <value>1</value>
    </const>
    <const id="2">
        <name>SOME_CONS_TWO</name>
        <value>2</value>
    </const>
    <const id="3">
        <name>SOME_CONS_THREE</name>
        <value>3</value>
    </const>
</constants>


теперь получить содержимое узла по id с помощью dom объекта я могу так:

Код

function getConstantOnID( $id ) {
  global $dom;
  $const_array = array();
  $consts = $dom->getElementsByTagName("const");
  foreach ($consts as $const) {
    if ($const -> getAttribute("id") == $id) {
      foreach ($const->childNodes  as $item) {
        if (in_array($item->nodeName, array("name","value") ) ) {
          $const_array["id"] = $const -> getAttribute("id");
          $const_array[$item->nodeName] = $item->textContent;
        }
      }
    }
  }
  return $const_array;
}


а терь как изменить содержимое (name/value) узла, найденного по id?

PM MAIL   Вверх
Golda
Дата 7.8.2007, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 5
Всего: 42



Код

function setConstantOnId($dom, $id, $value) {
    $xpath = new DOMXPath($dom);

    $valueObj = $xpath->query('/constants/const[@id=' . $id . ']/value');
    if ($valueObj->length == 0) return false;
    $textDataObj = $valueObj->item(0)->childNodes->item(0);
    $textDataObj->replaceData(0, strlen($textDataObj->nodeValue), $value);
    return true;
}


только не забудьте потом сохранить изменения

Код

echo $dom->saveXML();



--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.