Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> распознаватель XML в PHP4 
:(
    Опции темы
Egor.84
Дата 19.10.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 11.10.2007

Репутация: нет
Всего: нет



Здравствуйте.
Может кто-то подскажет мне,вот есть текст в формате xml

Код

<report name="pp_kp" dx="-10" dy="-7" defcolor="0" deffont="Times New Roman" defsize="9" defwidth="2" dbg="0" nv="0">

<obj type="2" x="17" y="7" cx="182" cy="0"></obj>
<obj type="2" x="17" y="12" cx="182" cy="0"></obj>
<obj type="2" x="17" y="39" cx="182" cy="0"></obj>
</report>

мне просто надо достать отсюда эти координаты и тип объекта.Никак не могу сообразить как мне их достать(в массив загнать что-ли)а потом как передать правильно в ПХП.Кусок кода есть использует XML Parser внутри объекта.Вот, а правильно ли я его использую,просто никак не пойму как мне нужны координаты достать и передать потом куда нужно.Большое спасибо если кто-то посоветует что-то.
Код

class xml{
var $parser;

function xml()
{
$this->parser = xml_parser_create();

xml_set_object($this->parser, &$this);
xml_set_element_handler($this->parser, "tag_open", "tag_close");
xml_set_character_data_handler($this->parser, "cdata");
}
function parse($data)

xml_parse($this->parser, $data);
}
function tag_open($parser, $tag, $attributes)

var_dump($parser, $tag, $attributes); 
}
function cdata($parser, $cdata)
{
var_dump($parser, $cdata);
}
function tag_close($parser, $tag)
{
var_dump($parser, $tag);
}
} // конец class xml
$xml_parser = new xml();
$xml_parser->parse("<obg type='2' x='4' y='2' cx='5' cy='10'>PHP</obg>");



M
Guedda
Модератор: Пользуйтесь кнопкой "Код"!


Это сообщение отредактировал(а) Guedda - 22.10.2007, 10:47
PM MAIL   Вверх
euginewm
Дата 15.12.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Drupal Development



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 25.9.2006
Где: Zaporozhye

Репутация: нет
Всего: нет



Все намного проще:

test.xml - файл с вашей разметкой
Код

<report name="pp_kp" dx="-10" dy="-7" defcolor="0" deffont="Times New Roman" defsize="9" defwidth="2" dbg="0" nv="0">
<obj type="2" x="17" y="7" cx="182" cy="0"></obj>
<obj type="2" x="17" y="12" cx="182" cy="0"></obj>
<obj type="2" x="17" y="39" cx="182" cy="0"></obj>
</report>


Решение поставленной задачи:
Код

<?php
    function parse_xml($xml)
    {
     $p = xml_parser_create();
     xml_parse_into_struct($p, $xml, $vals, $index);
     xml_parser_free($p);

     for ( $i=0; $i<count($vals); $i++)
     {
         if ( $vals[$i]['tag'] == 'OBJ' )
         {    
                $array[] = array (
                     'type' => $vals[$i]['attributes']['TYPE'],
                     'x' => $vals[$i]['attributes']['X'],
                     'y' => $vals[$i]['attributes']['Y'],
                     'cx' => $vals[$i]['attributes']['CX'],
                     'cy' => $vals[$i]['attributes']['CY'],
                );
         }
     }
     
     return $array;
    }

    $xml = file_get_contents ('test.xml');
    $ar_parse = parse_xml($xml);

?>


Массив на выходе такого вида
Код

Array
(
    [0] => Array
        (
            [type] => 2
            [x] => 17
            [y] => 7
            [cx] => 182
            [cy] => 0
        )

    [1] => Array
        (
            [type] => 2
            [x] => 17
            [y] => 12
            [cx] => 182
            [cy] => 0
        )

    [2] => Array
        (
            [type] => 2
            [x] => 17
            [y] => 39
            [cx] => 182
            [cy] => 0
        )

)


PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Libraries | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.