Fork me on GitHub

The WebDevil

Enjoy development

Итак, столкнулся я с задачей сгенерировать XML-документ. Довольно простой. Но я понял, что зря я не работал с XML раньше. Благо, в сети нашелся туториал, который замечтательно подошел мне. И на этом примере вполне можно освоить основы этой нехитрой генерации…

Найдено это было тут:

http://weblog.bignerdranch.com/?p=8, все копирайты принадлежат их авторам. Сдесь же я вкратце приведу пример.

Надо сделать такое:

< ?xml version="1.0" encoding="iso-8859-1"?>
<teams>
<team>
<name>Atlanta Braves</name>
<stadium>Turner Field</stadium>
<league>National</league>
</team>
<team>
<name>Chicago Cubs</name>
<stadium>Wrigley Field</stadium>
<league>National</league>
</team>

...

<team>
<name>Baltimore Orioles</name>
<stadium>Camden Yards</stadium>
<league>American</league>
</team>

...

</teams>

И сделать его можно так:

 <?php

// xml_teams_dom.php

// create the new XML document
$dom = new DOMDocument('1.0', 'iso-8859-1');

// create the root element
$list_of_teams = $dom->createElement('teams');
$dom->appendChild($list_of_teams);

// create the first team element
$team = $dom->createElement('team');
$list_of_teams->appendChild($team);

// now create all the subelements for the team
$name = $team->appendChild($dom->createElement('name'));
$name->appendChild($dom->createTextNode('Atlanta Braves'));

$stadium = $team->appendChild($dom->createElement('stadium'));
$stadium->appendChild($dom->createTextNode('Turner Field'));

$league = $team->appendChild($dom->createElement('league'));
$league->appendChild($dom->createTextNode('National'));

// create the second team element
$team = $dom->createElement('team');
$list_of_teams->appendChild($team);

// now create all the subelements for the second team
$name = $team->appendChild($dom->createElement('name'));
$name->appendChild($dom->createTextNode('Chicago Cubs'));

$stadium = $team->appendChild($dom->createElement('stadium'));
$stadium->appendChild($dom->createTextNode('Wrigley Field'));

$league = $team->appendChild($dom->createElement('league'));
$league->appendChild($dom->createTextNode('National'));

$xml_result = $dom->saveXML();

// simple mechanism to see the XML

print < <<textarea name="xml_result" rows="40" cols="80">$xml_result XML_SHOW;  ?>

Собственно, мне было не столь важно описание, поскольку в теории все понятно, сколько практический пример.

4 Responses to “PHP5 && XML”

  1. Одна проблема – всё это будет работать только если PHP был собран с расширением DOMXML.

    sas171

  2. Я использую Ubuntu последней версии (development, на текущий момент – 6.10). И там все замечательно собрано с ним.
    Честно говоря, я уже очень давно отвык что-то собирать руками, если на то нет острой необходимости. И уже года два лично у меня такой не возникало.

    dm

  3. это когда имеешь доступ к серверу, а когда сайт лежит на каком-то хостинге, тем более дешевом, то ситуация выглядит иначе. Просто сам в такую ситуацию, хотя DOMXML мне очень нравится я его не могу использовать – сильно усложняет жизнь.

    sas171

  4. Согласен. Можно попробовать модуль загружать через dl(), но не факт что выйдет.
    Честно говоря, я бы советовал не использовать такие “дешевые” хостинги, так как бесплатный сыр бывает только в мышеловке. Из того, что могу посоветовать, это
    tanhost.com || booben.com

    dm