[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Простой парсер PHP
tureg1
и вновь я сталкиваюсь с незнакомыми для меня вещами, для реализации задуманного :) на этот раз с XML.

Ребята подскажите почему, php код не полностью парсит вот этот кусок XML:


<forecast version="1.2" last_updated="Sun, 25 Nov 2012 19:23:41 +0200">
<
url>http://www.weather.ua/show/?482</url>
<city id="482">
<
name>Братск</name>
<
name_en>bratsk</name_en>
<
region></region>
<
country id="643">
<
name>Россия</name>
<
name_en>Russia</name_en>
</
country>
</
city>
<
current last_updated="Sun, 25 Nov 2012 19:21:54 +0200" expires="Sun, 25 Nov 2012 19:56:54 +0200">
<
time>Sun, 25 Nov 2012 19:21:54 +0200</time>
<
cloud>90</cloud>
<
pict>_9_snow.gif</pict>
<
t>-11</t>
<
t_flik>-15</t_flik>
<
p>737</p>
<
w>1</w>
<
w_gust>0</w_gust>
<
w_rumb>110</w_rumb>
<
h>91</h>
</
current>
</
forecast>


Сам php код

$depth = 0;
$file = "http://xml.weather.co.ua/1.2/forecast/482?dayf=5&userid=snowkite-go_ru&lang= ru";

$xml_parser = xml_parser_create();

xml_set_element_handler($xml_parser, "startElement", "endElement");

xml_set_character_data_handler($xml_parser, ’stringElement’);

if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}

while ($data = fgets($fp)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
echo "<br>XML Error: ";
echo xml_error_string(xml_get_error_code($xml_parser));
echo " at line ".xml_get_current_line_number($xml_parser);
break;
}
}





function stringElement($parser, $str) {
if (strlen(trim($str)) > 0) {
global $depth;

echo str_repeat(" ", $depth * 3);
echo 'String: '.$str.'<br>';
}
}



function startElement($parser, $name, $attrs) {
global $depth;

echo str_repeat(" ", $depth * 3);
echo "<b>Element: $name</b><br>";

$depth++;

foreach ($attrs as $attr => $value) {
echo str_repeat(" ", $depth * 3);

echo 'Attribute: '.$attr.' = '.$value.'<br>';
}
}


function endElement($parser, $name) {
global $depth;

$depth--;
}

xml_parser_free($xml_parser);


На выходе я получаю это:

Element: FORECAST
Attribute: VERSION = 1.2
Attribute: LAST_UPDATED = Sun, 25 Nov 2012 19:32:49 +0200
Element: URL
Element: CITY
Attribute: ID = 482
Element: NAME
Element: NAME_EN
Element: REGION
Element: COUNTRY
Attribute: ID = 643
Element: NAME
Element: NAME_EN

А нужно, что бы я получал не только название элементов, но и их значения, в чем дело?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.