Помогите разобраться с извлечением данных из XML.

Quexx

Новичок
Помогите разобраться с извлечением данных из XML.

С xml столкнулся первый раз. Почитал что было написано в статьях и на форуме..., но что-то так и не дошло до меня((. Вообщем нужна помощь в извлечении данных из xml файла.
Код:
<MMWEATHER>
<REPORT type="frc3">
<TOWN latitude="54" longitude="91">
<FORECAST day="23" month="6" year="2006" hour="13" tod="2" predict="18" weekday="6">
       <PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
       <PRESSURE max="733" min="731"/>
       <TEMPERATURE max="33" min="31"/>
       <WIND min="1" max="3" direction="3"/>
       <RELWET max="18" min="13"/>
       <HEAT min="29" max="31"/>
</FORECAST>
</TOWN>
</REPORT>
</MMWEATHER>
Файл не полный в нем есть нескольколько узлов (не пинайте если это не узлы) FORECAST.

В итоге хочу получить из этого файла переменные, чтобы вывести данные пользователю типа:
PHP:
echo "Температура воздуха: $tempmin - $tempmax <br />";
echo "Атм. давление: $pressuremin - $pressuremax <br />";
 

Quexx

Новичок
У меня РНР 4.3.6 , дом почемуто вообще не работатет (вроде как в этой версии должен) на $doc = new DOMDocument; ругается так: Cannot instantiate non-existent class: domdocument.
Пока получилось разобрать этот xml регулярным выражением, но думаю это не правильно, должен же быть способ попроще..
 

Quexx

Новичок
Автор оригинала: sayber
Если PHP 5, то можно использовать Xpath
Вот пример, который на ходится по этой ссылке:
PHP:
$doc = new DOMDocument;
// We don't want to bother with white spaces
$doc->preserveWhiteSpace = false;
$doc->Load('book.xml');
$xpath = new DOMXPath($doc);
// We starts from the root element
$query = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
   echo "Found {$entry->previousSibling->previousSibling->nodeValue}," .
         " by {$entry->previousSibling->nodeValue}\n";
}
то есть это путь от первого элемента в xml файле?
PHP:
$query = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]';
// А что тогда за путь будет в моем случае?
$query = '//MMWEATHER/REPORT/TOWN/FORECAST'; // Если конечно я правильно понял.., тогда что дальше?
-~{}~ 23.06.06 13:04:

Автор оригинала: Gorynych
расширение DOM является заменой расширения DPM_XML (http://ru.php.net/manual/ru/ref.domxml.php) используемого в PHP 4
Думаю..тогда проще перейти на php5? Вроде как и возможность есть)) ..вот только времени нет..((
 

worm

Новичок
Рациональней использовать XSLT для преобразования XML в HTML.
 

MiRacLe

просто Чудо
$xml = [m]simplexml_load_string[/m]($your_forecast_xml); // (php 5)

var_dump($xml->MMWEATHER->TOWN->FORECAST->TEMPERATURE);
 

Quexx

Новичок
Автор оригинала: worm
Рациональней использовать XSLT для преобразования XML в HTML.
Да в HTML не нужно. С полученными данными еще нужно будет поработать..Готовые данные хочу показывать на разных страницах..Думаю, что XSLT не подойдет..в данном случае, хотя могу ошибаться.
 
Сверху