Вход/Регистрация
Курс "Язык программирования PHP"
вернуться

Савельева Нина Владимировна

Шрифт:

<?

// сначала делаем то же,

// что и в предыдущем примере

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

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

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

exit;

}

$root = $dom->document_element;

// Получаем массив потомков

// родительского узла

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

$nodes = $root->child_nodes;

print_r($nodes);

echo "<hr>";

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

// узла в массиве

foreach($nodes as $node){

// Если текущий узел – один

// из узлов <person>, то

// продолжаем ее обработку,

// чтобы получить информацию

// об этой личности

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

// Создаем массив, куда

// будем собирать информацию

// о рассматриваемой личности

$currentPers = array;

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

// который хранится в атрибуте 'id'

$currentPers['id'] =

$node->get_attribute('id');

// Получаем массив потомков

// <person>. Это вся

// информация о личности

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

$persons_info =

$node->child_nodes;

// Перебираем все дочерние

// узлы $node

foreach ($persons_info as $info){

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

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

if ($info->type==

XML_ELEMENT_NODE) {

// тогда метод tagname

// возвратит имя этого

// элемента (тега), а метод

// get_content –

// его содержимое

$currentPers[$info->tagname] =

$info->get_content;

}

}

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

// массивы

print_r ($currentPers);

echo "<br>";

}

}

?>

Итак, мы научились обходить дерево XML. Теперь можно попытаться что-нибудь найти в XML-файле. Правда, делать это не совсем удобно опять же из-за переносов строк, которые мы использовали при написании XML-файла. Пусть наш XML-файл записан в строку, а точнее, в нем есть следующая строка:

...

<person id="20">

<name>

<first>Иван</first>

<last>Иванов</last>

</name>

...

Тогда в наш предыдущий пример вставим (после вывода на экран полученных массивов) строчку для поиска электронного адреса Ивана Иванова.

...

$str = $currentPers["email"];

if ($currentPers["name"] ==

"Иван Иванов" )

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

"Ваш e-mail $str";

...

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

Далее разберем задачу, как можно добавить в нашу базу данных новую личность средствами php.

Сначала нужно скопировать описание личности (считаем, что все личности описываются с помощью стандартного набора характеристик, как в файле persons.xml). Это делается с помощью метода DomNode->clone_node. Таким образом, мы клонируем элемент <person> и все его внутренние элементы (содержание тегов не копируется).

  • Читать дальше
  • 1
  • ...
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: