Категории
Самые читаемые

Справочник по PHP - white cat

Читать онлайн Справочник по PHP - white cat

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 16 17 18 19 20 21 22 23 24 ... 55
Перейти на страницу:

SimpleXMLElement->children -- Возвращает дочерние элементы для заданного элемента

SimpleXMLElement->xpath -- Выполняет Xpath-запрос к XML-данным

simplexml_import_dom -- Возвращает объектSimpleXMLElement, созданный из DOM-объекта.

simplexml_load_file -- Интерпретирует XML-файл в объект

simplexml_load_string -- Интерпретирует строку с XML в объект

SimpleXML

Введение

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

Требования

SimpleXML присутствует в PHP начиная с версии 5.

Установка

SimpleXML установлен в PHP по умолчанию. Для того, чтобы отключить это расширение, перекомпилируйте PHP с ключом --disable-simplexml.

Примеры

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

<?php

$xmlstr = <<<XML

<?xml version='1.0' standalone='yes'?>

<movies>

<movie>

<title>PHP: Behind the Parser</title>

<characters>

<character>

<name>Ms. Coder</name>

<actor>Onlivia Actora</actor>

</character>

<character>

<name>Mr. Coder</name>

<actor>El Act&amp;#211;r</actor>

</character>

</characters>

<plot>

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.

</plot>

<rating type="thumbs">7</rating>

<rating type="stars">5</rating>

</movie>

</movies>

XML;

?>

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

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

<?php

include 'example.php';

$xml = simplexml_load_string($xmlstr);

echo $xml-&gt;movie[0]-&gt;plot; // "So this language. It's like..."

?>

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

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

<?php

include 'example.php';

$xml = simplexml_load_string($xmlstr);

/* Для каждого элемента &lt;movie&gt; мы отображаем элемент . */

foreach ($xml-&gt;movie as $movie) {

echo $movie-&gt;plot, '&lt;br /&gt;';

}

?>

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

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

<?php

include 'example.php';

$xml = simplexml_load_string($xmlstr);

/* Получение доступа к атрибутам элементов &lt;rating&gt; для первого кино.*/

foreach ($xml-&gt;movie[0]-&gt;rating as $rating) {

switch((string) $rating['type']) { // Возвращает атрибуты как элементы массива

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-&gt;movie-&gt;title == 'PHP: Behind the Parser') {

print 'Мой любимый фильм.';

}

htmlentities((string) $xml-&gt;movie-&gt;title);

?>

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

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

<?php

include 'example.php';

$xml = simplexml_load_string($xmlstr);

foreach ($xml-&gt;xpath('//character') as $character) {

echo $character-&gt;name, ' съиграл ', $character-&gt;actor, '&lt;br /&gt;';

}

?>

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

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

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

<?php

include 'example.php';

$xml = simplexml_load_string($xmlstr);

$xml-&gt;movie[0]-&gt;characters-&gt;character[0]-&gt;name = 'Miss Coder';

echo $xml-&gt;asXML();

?>

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

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

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

<?php

$dom = new domDocument;

$dom-&gt;loadXML('&lt;books&gt;&lt;book&gt;&lt;title&gt;blah&lt;/title&gt;&lt;/book&gt;&lt;/books&gt;');

if (!$dom) {

echo 'Ошибка преобразования документа';

exit;

}

$s = simplexml_import_dom($dom);

echo $s-&gt;book[0]-&gt;title;

?>

Содержание:

SimpleXMLElement->asXML -- Возвращает правильно сформированный XML-документ

SimpleXMLElement->attributes -- Возвращает атрибуты элемента.

SimpleXMLElement->children -- Возвращает дочерние элементы для заданного элемента

SimpleXMLElement->xpath -- Выполняет Xpath-запрос к XML-данным

simplexml_import_dom -- Возвращает объектSimpleXMLElement, созданный из DOM-объекта.

simplexml_load_file -- Интерпретирует XML-файл в объект

simplexml_load_string -- Интерпретирует строку с XML в объект

asXML

SimpleXMLElement-asXML

SimpleXMLElement-asXML -- Возвращает правильно сформированный XML-документ

Описание

mixed SimpleXMLElement->asXML ( [string filename] )

Метод asXML формирует данные в XML версии 1.0.

Список параметров

Возвращаемые значения

Если имя файла задано, то метод запишет XML данные в указанный файл. В противном случае метод возвратит XML-данные в виде строки.

Замечания

Если в исходном документе в заголовках была указана кодировка XML-документа при помощи параметра encoding, то метод asXML возвратит XML-документ в указанной кодировке. Изменение кодировки XML-документа при помощи расширения SIMPLEXML невозможно.

Примеры

Пример 1. Вывести XML

<?php

$string = <<<XML

<a>

<b>

<c>text</c>

<c>stuff</c>

</b>

<d>

<c>code</c>

</d>

</a>

XML;

$xml = simplexml_load_string($string);

echo $xml->asXML(); // <?xml ... <a><b><c>text</c><c>stuff</c> ...

?>

Метод asXML также может работать с Xpath:

Пример 2. Использование метода asXML() в работе с Xpath

<?php

// Продолжение примера, указанного выше.

/* Поиск <a><b><c> */

$result = $xml->xpath('/a/b/c');

while(list( , $node) = each($result)) {

echo $node->asXML(); // <c>text</c> и <c>stuff</c>

}

?>

attributes

SimpleXMLElement-attributes

SimpleXMLElement-attributes -- Возвращает атрибуты элемента.

Описание

SimpleXMLElement simplexml_element->attributes ( [string data] )

Эта функция возвращает названия и значения атрибутов выбранного xml-элемента.

Замечание: SimpleXML содержит правило добавления итеративных свойств к большинству методов. Они не могут быть просмотрены с испольванием var_dump() или каких-либо других средств анализа объектов.

Пример 1. Интепретация XML-строки

<?php

$string = <<<XML

<users>

<user name="Evgen" age="27">[email protected]</user>

</users>

XML;

$xml = simplexml_load_string($string);

foreach($xml->users[0]->attributes() as $a => $b) {

echo $a,'="',$b,""n";

}

?>

Данный пример выведет:

name="Evgen"age="27

children

SimpleXMLElement-children

SimpleXMLElement-children -- Возвращает дочерние элементы для заданного элемента

Описание

SimpleXMLElement simplexml_element->children ( [string nsprefix] )

Данный метод находит дочерние элементы для заданного элемента.

1 ... 16 17 18 19 20 21 22 23 24 ... 55
Перейти на страницу:
На этой странице вы можете бесплатно скачать Справочник по PHP - white cat торрент бесплатно.
Комментарии
Открыть боковую панель
Комментарии
Сергій
Сергій 25.01.2024 - 17:17
"Убийство миссис Спэнлоу" от Агаты Кристи – это великолепный детектив, который завораживает с первой страницы и держит в напряжении до последнего момента. Кристи, как всегда, мастерски строит