|
|
|
| Всем привет !
Подскажите как отпарсить нижеследующий пример,и разложить все данные по переменным ?
<?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>
|
| |
|
|
|
|
|
|
|
для: 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($fp, 4096))
{
if ( !xml_parse($xml_parser, $data, feof($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);
?>
|
| |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|