В прошлой статье мы с Вами создавали XML-документ через PHP , и я обещал, что в следующей статье мы с Вами будем его парсить. И сегодня я Вам покажу, как можно парсить XML-документ на PHP .

Парсинг XML-документа на PHP

В прошлой статье мы с Вами создавали XML-документ через PHP, и я обещал, что в следующей статье мы с Вами будем его парсить. И сегодня я Вам покажу, как можно парсить XML-документ на PHP.

Предлагаю парсить созданный нами в прошлой статье документ, а данные оттуда просто вывести в браузер. Привожу код скрипта:

<?php
  $dom = new domDocument("1.0", "utf-8"); // Создаём XML-документ версии 1.0 с кодировкой utf-8
  $dom->load("users.xml"); // Загружаем XML-документ из файла в объект DOM
  $root = $dom->documentElement; // Получаем корневой элемент
  $childs = $root->childNodes; // Получаем дочерние элементы у корневого элемента
  /* Перебираем полученные элементы */
  for ($i = 0; $i < $childs->length; $i++) {
    $user = $childs->item($i); // Получаем следующий элемент из NodeList
    $lp = $user->childNodes; // Получаем дочерние элементы у узла "user"
    $id = $user->getAttribute("id"); // Получаем значение атрибута "id" у узла "user"
    $login = $lp->item(0)->nodeValue; // Получаем значение узла "login"
    $password = $lp->item(1)->nodeValue; // Получаем значение узла "password"
    /* Выводим полученные данные */
    echo "ID: $id<br />";
    echo "Логин: $login<br />";
    echo "Пароль: $password<br />";
    echo "-----------------------<br />";
  }
?>

Из этого кода Вы должны не только понять, как парсить XML-документ на PHP, но и то, что сам процесс парсинга зависит от структуры документа. То есть Вы должны знать, какова структура, иначе разобрать такой документ будет проблемно. Я уже когда-то писал, что главная особенность XML - это строгость синтаксиса. Надеюсь, Вы теперь понимаете, почему это так важно. Без этой "жёсткости кода" было бы крайне затруднительно парсить документы, а вещь эта очень часто требуется. Элементарно при импорте каких-то данных из XML-файла с последующим размещением их в базе данных.