// Для того чтобы добавить описание
// новой личности, нужно знать,
// как описывается каждая личность.
// Выбираем элемент person,
// который содержит описание личности
$elements = $dom->get_elements_by_tagname("person");
$element = $elements[0]; 
//вычисляем родителя и потомков
$parent = $element->parent_node();
$children = $element->child_nodes();
// клонируем элемент person
$person = $element->clone_node();
// устанавливаем новой
// личности идентификатор
$attr = $person->set_attribute("id", "30");
// если у личности были потомки,
// то их тоже надо клонировать
foreach ($children as $child){
  //клонируем ребенка
  $node = $child->clone_node();
  //получаем массив внуков
  $grand_children = $child->child_nodes();
  // если ребенок имеет потомков,
  //т.е. массив внуков не пуст, то
  if (count($grand_children)<>1){
       //клонируем каждого внука
       //и присоединяем к уже
       //клонированному ребенку
    foreach($grand_children as $grand_child){
     $lastnode = $grand_child->clone_node();
       //записываем в нужные теги
       //подходящие значения
      if ($grand_child->tagname=="first")
       $cont = $lastnode->set_content("Nina");
      if ($grand_child->tagname=="last")
       $cont = $lastnode->set_content("Saveljeva");
      if ($grand_child->tagname=="day")
       $cont = $lastnode->set_content("7");
      if ($grand_child->tagname=="month")
       $cont = $lastnode->set_content("06");
      if ($grand_child->tagname=="year")
       $cont = $lastnode->set_content("1981");
      $newlastnode = $node->append_child($lastnode);
        }
    }
    if ($child->tagname=="email") {
        $cont = $node->set_content("help@intuit.ru");
    }
    $newnode2 = $person->append_child($node);
}
$newnode = $parent->append_child($person);
//dump_mem создает XML-документ из dom
//представления
echo "<PRE>";
$xmlfile = $dom->dump_mem(true);
// посмотрим в браузере,
// что получилось
echo htmlentities($xmlfile);
echo "</PRE>";
// запишем полученный XML-файл
// в файл "test.xml"
$h = fopen("test.xml","a");
if (!fwrite($h, $xmlfile)) {
        print "Cannot write " . "to file ($filename)";
        exit;
    }
}

Пример 14.5. Добавление описания новой личности в каталог
Закрыть окно