Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2010, 12:16   #1
IvanSCM
 
Аватар для IvanSCM
 
Регистрация: 01.11.2008
Сообщений: 9
По умолчанию PHP SAX, построение массива из документа неизвестной структуры

Доброго времени суток дорогие форумчене и пыхыпы прогрограммеры. Надо бы мне с помощью SAX создать массив дерева документа, что бы потом в шаблонизаторе разобрать. Прошу вашей помощи, класс прилагаю. Кто то подсказывал использовать стек, но я ума не приложу как быть.

PHP код:
<?php

/**
 * Класс для упрощения работы со средствами SAX встроеных в PHP.
 *
 * Создает дерево в виде массива, принимает путь к файлу
 * @author IvanSCM <ivanscm@fromru.com>
 */
class SAXRead {

    
/**
     *
     * @var string $filename Имя файла для работы внутри класса
     */
    
private $filename;

    
/**
     *
     * @var resource $xml Дескриптор XML парсера
     */
    
private $xml;

    
/**
     *
     * @var integer $level Текущий уровень вложености при обходе
     */
    
private $level;

    
/**
     *
     * @var array $tree Дерево документа
     */
    
private $tree;

    
/**
     * Конструктор
     *
     * Устанавливает имя файла для дальнейшей работы класса и регистрирует методы для обработчиков SAX
     * @param string $filename
     */
    
function __construct($filename) {
        
$this->level 0;
        
$this->filename $filename;
        
$this->xml xml_parser_create('UTF-8');
        
xml_set_element_handler($this->xml'self::StartTAG''self::EndTAG');
        
xml_set_character_data_handler($this->xml'self::CharFind');
        
//устанавливаем нижний регистр для тегов документа
        
xml_parser_set_option($this->xmlXML_OPTION_CASE_FOLDINGfalse);
    }

    
/**
     * Обработчик начального тега
     * @param resouce $xml
     * @param mixed $tag
     * @param mixed $attr
     */
    
private function  StartTAG ($xml$tag$attr){
        
$this->level++;
    }

    
/**
     * Обработчик конечного тега
     * @param resource $xml
     * @param mixed $tag
     */
    
private function EndTag($xml$tag) {
        
$this->level--;
    }

    
/**
     * Обработчик содержимого
     * @param resourse $xml
     * @param mixed $data
     */
    
private static function CharFind($xml$data){
        
    }
    
    
/**
     * Функция ReadFile
     * 
     * Создает структуру из файла
     * @return Array
     */
    
function ReadFile(){
        
xml_parse($this->xmlfile_get_contents($this->filename));
        return 
$this->tree;
    }

}
?>

<?php

include_once 'SAXRead.php';
$sax = new SAXRead($xmldoc['tmp_name']);
$xmlobj $sax->ReadFile();
print_r($xmlobj); //тут должны получить структуру документа

?>
Код:
[name] root-element
[attributes] 
    [id] "xml"
    [href] "sdfsd"
[children]
    [name] root-element
    [attributes] 
        [id] "xml"
        [href] "sdfsd"
примерно такую структуру получить должны
Gta Russian Racing Developer
- Ура!! наша мама девственица: закричали дети.
IvanSCM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое создание структуры документа cmygla Microsoft Office Word 1 08.12.2010 19:13
построение XML сложной структуры с помощью nativeXML adben Общие вопросы Delphi 2 29.07.2010 07:06
Заполнение документа Word из массива даных Excel sasha_prof Microsoft Office Excel 2 27.01.2010 11:10
Построение графика из массива sistus Общие вопросы C/C++ 1 24.10.2009 20:17
Выделение и копирование части документа на основе структуры файла satyr_of_frost Microsoft Office Word 23 12.02.2009 09:15