Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Парсинг XML.
 
 автор: dima2207   (10.06.2008 в 00:05)   письмо автору
 
 

Всем привет !
Подскажите как отпарсить нижеследующий пример,и разложить все данные по переменным ?
<?xml version="1.0" encoding="UTF-8"?>
<doc><elem><name>dima2207</name><disk used="38" limit="0"/><bandwidth used="548" limit="100000000"/><ssl/><ssi/><cgi/><php/><preset>custom</preset></elem><elem><name>dod</name><disk used="0" limit="500"/><bandwidth used="0" limit="100000000"/><ssi/><cgi/><php/><preset>1</preset></elem><elem><name>dod123</name><disk used="0" limit="500"/></elem><elem><name>filmi</name><disk used="15" limit="0"/><bandwidth used="11" limit="100000000"/><cgi/><php/><preset>custom</preset></elem><elem><name>hosting</name><disk used="8" limit="0"/><bandwidth used="0" limit="100000"/><ssi/><cgi/><php/><preset>1</preset></elem><elem><name>wolf</name><disk used="0" limit="0"/><bandwidth used="0" limit="100000000"/><preset>custom</preset></elem></doc>

   
 
 автор: elenaki   (10.06.2008 в 11:14)   письмо автору
 
   для: dima2207   (10.06.2008 в 00:05)
 

<?
// Имя файла, который будем читать
$file "test.xml";

$DESCRIPTION_BOOL false;

$DESCRIPTION_TXT '';


function 
startElement($parser$name$attrs)
{
global  
$DESCRIPTION_BOOL$DESCRIPTION_TXT;    
if (
$name=='DESCRIPTION'$DESCRIPTION_BOOL true;
}

function 
endElement($parser$name)
{
global 
$DESCRIPTION_BOOL$DESCRIPTION_TXT;
print 
"Закрыт тег " $name "<br>";                                                                 
if (
$name=='DESCRIPTION') {
     
$DESCRIPTION_BOOL false;
     echo 
"<br>".$DESCRIPTION_TXT."<br>";  
 }
}
                                                      
function 
characterData($parser$data)
{
global 
$DESCRIPTION_BOOL$DESCRIPTION_TXT;
if ((
$DESCRIPTION_BOOL == true) && ($data<>'')) $DESCRIPTION_TXT iconv("UTF-8","windows-1251",$data); else $DESCRIPTION_TXT '';
}


// Создаем парсер
$xml_parser xml_parser_create();

// Настраиваем его (не чувствителен к регистру)
//xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);

// Указываем ф-ии обработки начального тега и конечного тега (см. выше)
xml_set_element_handler($xml_parser"startElement""endElement");

// Ф-ия обработки данных внутри тега (см. выше)
xml_set_character_data_handler($xml_parser"characterData");

// Открываем файл
if ( !($fp fopen($file"r")) )
{ die(
"could not open XML input"); }

// Читаем файл и парсингуем
while ($data fread($fp4096))
{
if ( !
xml_parse($xml_parser$datafeof($fp)) )
{
// Сообщение если возникла ошибка парсинга
die( 
sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)) 
);
}
}
// удаляем парсер, он сделал свое дело ;0)
xml_parser_free($xml_parser);
?>

   
 
 автор: dima2207   (10.06.2008 в 17:10)   письмо автору
 
   для: elenaki   (10.06.2008 в 11:14)
 

Вы уж простите . но это несовсем то что мне нужно , вот результат работы скрипта , т.е. он парсит только закрывающий тег , а надо что-бы всю информацию захватывал .Включая и <disk used="38" limit="0"/><bandwidth used="561" limit="100000000"/>

Закрыт тег NAME
Закрыт тег DISK
Закрыт тег BANDWIDTH
Закрыт тег SSL
Закрыт тег SSI
Закрыт тег CGI
Закрыт тег PHP
Закрыт тег PRESET
Закрыт тег ELEM
Закрыт тег NAME
Закрыт тег DISK
Закрыт тег BANDWIDTH
Закрыт тег SSI
Закрыт тег CGI
Закрыт тег PHP
Закрыт тег PRESET
Закрыт тег ELEM
Закрыт тег NAME
Закрыт тег DISK
Закрыт тег BANDWIDTH
Закрыт тег SSI
Закрыт тег CGI
Закрыт тег PHP
Закрыт тег PRESET
Закрыт тег ELEM
Закрыт тег NAME
Закрыт тег DISK
Закрыт тег BANDWIDTH
Закрыт тег CGI

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования