Форум сетевых администраторов
Показаны 4 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Парсинг Xml данных (http://netadmin.ws/forum/showthread.php?threadid=11935)


Помещено Andrej 31-07-2006 в 21:53:

Парсинг Xml данных

Имеется функция парсинга XML данных


PHP:


function xml2array($xml) {
    
$xmlary = array ();

    
$ReElements = '/<(w+)s*([^/>]*)s*(?:/>|>(.*?)<(/s*1s*)> )/s';
    
$ReAttributes = '/(w+)=(?:"|')([^"']*)(:?"|')/';

    
preg_match_all($ReElements, $xml, $elements);

    foreach (
$elements[1] AS $ie=>$xx) {
        
$xmlary[$ie]['name'] = $elements[1][$ie];

        if (
$attributes = trim($elements[2][$ie])) {
            
preg_match_all($ReAttributes, $attributes, $att);

            foreach (
$att[1] AS $ia=>$xx) {
                
$xmlary[$ie]['attributes'][$att[1][$ia]] = $att[2][$ia];
            }
        }

        
$cdend = strpos($elements[3][$ie], '<');

        if (
$cdend > 0) {
            
$xmlary[$ie]['text'] = substr($elements[3][$ie], 0, $cdend-1);
        }

        if (
preg_match($ReElements, $elements[3][$ie])) {
            
$xmlary[$ie]['elements'] = xml2array($elements[3][$ie]);
        } elseif (isset(
$elements[3][$ie])) {
            
$xmlary[$ie]['text'] = $elements[3][$ie];
        }

        
$xmlary[$ie]['closetag'] = $elements[4][$ie];
    }

    return 
$xmlary;
}



И есть XML данные для парсинга


code:
<TG><F name="Aaa" description="Bbb"/></TG>



Всё работает замечательно, пока в XML данных не встречаются спец символы "/" или ">"

Пробовал переписывать первое регулярное выражение на предмет отрицания всего подшаблона (?!(/> ).*), но в таком случае парсинг не корректно происходит

Как вот эту функцию переписать, что бы нормально обрабатывались данные, в которых есть символы "/" и/или ">" ?

__________________
f9ffe3323e79b2a558b92af5b4039e20


Помещено DicsyDel 01-08-2006 в 09:51:

Юзай стандратные функции пхп для парсинга XML... EXPAT.. это процедурный способ парсинга XML... задавай функции-хандлеры... либо, что я советую, юзай DOM XML... очень удобно...


Помещено Andrej 01-08-2006 в 21:18:

quote:
Первоначальное сообщение от DicsyDel
Юзай стандратные функции пхп для парсинга XML... EXPAT.. это процедурный способ парсинга XML... задавай функции-хандлеры... либо, что я советую, юзай DOM XML... очень удобно...


Мдя. Если я выбрал именно этот способ, значит на то были причины. По существу есть что сказать?

__________________
f9ffe3323e79b2a558b92af5b4039e20


Помещено polo 01-08-2006 в 23:32:

DicsyDel дело говорит. Зачем изобретать велосипед?
Вообще этот код не будет корректно обрабатываться, эта проблема будет постоянной, можно конечно помудохатся и все решить. Но только вот зачем когда есть стандартные решения?

__________________
Всегда есть решение.


Формат времени GMT. Текущее время 21:19.
Показаны 4 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.