Php: как работать с

Примеры

Практически все примеры используют XML-документ. Вместо того, чтобы каждый раз повторять содержание XML-документа в каждом примере, мы поместим XML-документ в файл, который будет читать при помощи функции simplexml_load_file().

<?php
$xmlstr = 
 PHP: Behind the ParserMs. CoderOnlivia ActoraMr. CoderEl Act&#211;r
   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  
 75

XML;

Простоту работы с SimpleXML можно продемонстрировать извлечением текста из заданного элемента XML-документа.

Пример 2. Получение текста в <plot>

<?php
include 'example.php';
$xml = simplexml_load_string($xmlstr);
echo $xml->movie->plot; // "So this language. It's like..."
?>

Пример 3. Работа с группой элементов в SimpleXML

Можно применять циклы для получения дочерних элементов заданного элемента (если дочерние элементы существуют).

<?php
include 'example.php';

$xml = simplexml_load_string($xmlstr);

/* Для каждого элемента  мы отображаем элемент . */
foreach ($xml->movie as $movie) {
   echo $movie->plot, '';
}

?>

Пример 4. Использование атрибутов

Выше было показано как работать с элементами XML-документа и их значениями. SimpleXML также имеет доступ к атрибутам элементов. Атрибуты указанного элемента доступны как ассоциативный массив данного элемента.

<?php
include 'example.php';

$xml = simplexml_load_string($xmlstr);

/* Получение доступа к атрибутам элементов  для первого кино.*/
foreach ($xml->movie->rating as $rating) {
    switch((string) $rating) { // Возвращает атрибуты как элементы массива
    case 'thumbs':
        echo $rating, ' thumbs up';
        break;
    case 'stars':
        echo $rating, ' stars';
        break;
    }
}
?>

Пример 5. Сравнение элементов и их атрибутов с текстовыми значениями

Для того, чтобы сравнивать элемент или атрибут со строковыми значениями, или передавать содержание элемента или атрибута в функцию, которая использует строковое значение передаваемого параметра, вы должны использовать элементы и атрибуты как строки с признаком (string). В противном случае PHP воспримет передаваемое значение как объект.

<?php     
include 'example.php';

$xml = simplexml_load_string($xmlstr);

if ((string) $xml->movie->title == 'PHP: Behind the Parser') {
    print 'Мой любимый фильм.';
}

htmlentities((string) $xml->movie->title);
?>

Пример 6. Использование Xpath

В SimpleXML включена поддержка запросов Xpath. Поиск всех элементов :

<?php
include 'example.php';
$xml = simplexml_load_string($xmlstr);

foreach ($xml->xpath('//character') as $character) {
    echo $character->name, ' съиграл ', $character->actor, '';
}
?>

‘//’ служит групповым символом. Чтобы задать абсолютный путь, требуется убрать один слеш.

Пример 7. Задание новых значений

Данные в SimpleXML не могут быть постоянными. Объект учитывает изменения всех его элементов.

<?php
include 'example.php';
$xml = simplexml_load_string($xmlstr);

$xml->movie->characters->character->name = 'Miss Coder';

echo $xml->asXML();
?>

Результатом вышеуказанного примера будет новый XML-документ, идеентичный оригиналу за исключением того, что в новом XML-документе будет вместо Ms. Coder будет Miss Coder.

Пример 8. Взаимодействие с DOM

PHP имеет механизм конвертации XML-документов из формата SimpleXML в DOM и обратно. Следующий пример показывает как конвертировать DOM-элемент в SimpleXML-элемент:

<?php
$dom = new domDocument;
$dom->loadXML('blah');
if (!$dom) {
     echo 'Ошибка преобразования документа';
     exit;
}

$s = simplexml_import_dom($dom);

echo $s->book->title;
?>
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: