Справочники, инструменты, документация

PHP: Чтение и получение данных из XML

Функция `simplexml_load_file` интерпретирует XML-файл в объект.
$str = file_get_contents('test.xml');
$xml = simplexml_load_string($str);

echo $xml->title. "<br>";
echo $xml->ingredient[2]. "<br>"; // элементы массивы нумеруются с нуля
echo $xml['name']. "<br>";
echo $xml->ingredient['amount'];

echo '<pre>';
print_r($xml);
echo '</pre>';

/*
$xmld = simplexml_load_file('00000000104.xml') or die('Не удалось создать объект'); // from dh
echo $xmld->object['value'] . "<br>";
echo $xmld->path[0]['caption']; 
echo $xmld['name'] . "<br>";
echo $xmld->parts->part->blocks->block->elements->element->object['value'] . "<br>";
echo $xmld->parts->part->blocks->block->elements->element->table->rows->row->object['value'] . "<br>";

echo '<pre>';
print_r ($xmld); 
echo '</pre>';
*/

test.xml

<?xml version="1.0" encoding="UTF-8"?>
<recipe name="хлеб" preptime="5" cooktime="180">
<title>Простой хлеб</title>
<ingredient amount="3" unit="стакан">Мука</ingredient>
<ingredient amount="0.25" unit="грамм">Дрожжи</ingredient>
<ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient>
<ingredient amount="1" unit="чайная ложка">Соль</ingredient>
<instructions>
 <step>Смешать все ингредиенты и тщательно замесить.</step>
 <step>Закрыть тканью и оставить на один час в тёплом помещении.</step>
 <step>Замесить ещё раз, положить на противень и поставить в духовку.</step>
</instructions>
</recipe>

Итог работы скрипта:

# Простой хлеб
# Тёплая вода
# хлеб
# 3

SimpleXMLElement Object
(
  [@attributes] => Array
    (
      [name] => хлеб
      [preptime] => 5
      [cooktime] => 180
    )

  [title] => Простой хлеб
  [ingredient] => Array
    (
      [0] => Мука
      [1] => Дрожжи
      [2] => Тёплая вода
      [3] => Соль
    )

  [instructions] => SimpleXMLElement Object
    (
      [step] => Array
        (
          [0] => Смешать все ингредиенты и тщательно замесить.
          [1] => Закрыть тканью и оставить на один час в тёплом помещении.
          [2] => Замесить ещё раз, положить на противень и поставить в духовку.
        )

    )

)