русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Добавление новых элементов в XML-документ


Дата добавления: 2013-12-23; просмотров: 1412; Нарушение авторских прав


Поиск информации в XML-файле.

Обход дерева объектов

Для получения значения текущего узла используют метод DomNode->node_value() или DomNode->get_content() для получения содержимого узла.

Для получения значения атрибута используется метод DomElement‑>get_attribute(attr_name). А метод DomNode->child_nodes() возвращает массив потомков данного узла.

 

Для различия объектов по типам, т.е. определения, является ли узел элементом (тегом), текстом, атрибутом и т.п., используют специальные константы. XML_ELEMENT_NODE определяет, является ли узел элементом, XML_ATTRIBUTE_NODE определяет, является ли узел атрибутом, и XML_TEXT_NODE определяет, является ли узел фрагментом текста. Эти константы имеют целочисленные значения 1, 2 и 3 соответственно.

// Обход дерева XML

<?

$xmlstr = join('',file(student.xml'));

if(!$dom = domxml_open_mem($xmlstr)) {

echo "Ошибка при разборе документа\n";

exit;

}

$root = $dom->document_element();

// Получаем массив потомков родительского узла

// (в нашем случае это массив <student>)

$nodes = $root->child_nodes();

print_r($nodes);

echo "<hr>";

// Начинаем обработку каждого узла в массиве

foreach($nodes as $node){

if ($node->tagname==' student '){

// Создаем массив, куда будем собирать информацию

// о рассматриваемом студенте

$currentStud = array();

// Получаем id студента,

$ currentStud ['id'] = $node->get_attribute('id');

// Получаем всю информацию о студенте

// (<name>,<birth> и т.д.)

$student_info = $node->child_nodes();

// Перебираем все дочерние узлы $node

foreach ($student _info as $info){

// проверяем, является ли узел

// элементом (xml-тегом)

if ($info->type==



XML_ELEMENT_NODE) {

$currentStud[$info->tagname] =

$info->get_content();

}

}

// выводим на экран полученные массивы

print_r ($currentStud);

echo "<br>";

}

}

?>

 

//поиска электронного адреса Ивана Иванова.

$str = $currentStud["email"];

if ($currentStud["name"] =="Ivan" )

echo "Здравствуйте, Ivan! " .

"Ваш e-mail $str";

Вначале скопируем описание студента с помощью метода DomNode->clone_node(). Таким образом клонируется элемент <student> и все его внутренние элементы, при этом содержание тегов не копируется.

Далее необходимо установить какие-нибудь значения для элементов описания студента. В конце нужно записать полученное описание студента в качестве потомка корневого элемента в дерево DOM с помощью метода DomNode->append_child(new_node), где в качестве параметра передается созданный объект (новый узел).

Для удаления узла можно воспользоваться методом DomNode->unlink_node(), применив его к узлу, который требуется удалить..

// который содержит описание студента

$elements = $dom->get_elements_by_tagname("student");

$element = $elements[0];

//вычисляем родителя и потомков

$parent = $element->parent_node();

$children = $element->child_nodes();

// клонируем элемент student

$student = $element->clone_node();

// устанавливаем идентификатор

$attr = $student->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 = $student->append_child($node);

}

$newnode = $parent->append_child($student);

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;

}

}



<== предыдущая лекция | следующая лекция ==>
Object domxml_open_file (string filename) | Укажите корректные типы данных в PHP 5.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.