[ Сообщений: 8 ] 
Начать новую тему Ответить на тему
Автор Сообщение
СообщениеДобавлено: 08 июл 2005, 17:25 
Аватара пользователя

Сообщения: 7
Поблагодарили: 0 раз.
В связи с тем, что многие партнеры выразили желание чтобы XML-файл экспорта для партнера мог быть разбит на отдельные, содержащие только одного рекламодателя, куски - мне стало интересно, почему партнеры этого могут хотеть. Удивительно, но большинство назвало в качестве причины то, что файл получается большой и не лезет в память. Господа программеры - коллеги! Если кто-то не умет пользоваться SAX парсерами - обязуюсь помочь или, по крайней мере, дать ссылку на литературу.

ЗЫ: Разбивку мы, конечно, сделали - клиент почти всегда прав :)
Но все-таки мое мнение, что оно не есть хорошо

Засим мой опус прерываю.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 июл 2005, 13:02 
Аватара пользователя
Всё лезет, просто некоторые рекламодатели откатываются на нескольких площадках, и на сайтах некоторых партнёров уже присутствуют. Может в этом причина. Хотя для меня по барабану я бы просто отфильтровал и всё.

Вернуться к началу
  
 
СообщениеДобавлено: 05 июн 2006, 11:35 
Аватара пользователя

Сообщения: 5
Поблагодарили: 0 раз.
День добрый!
Хотелось бы кусок кода perl скрипта использующего SAX парсер на ultrastore@mail.ru или выложите прямо сюда. Teм более знаю, что данный скрипт у Вас имеется и именно на perl.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 июн 2006, 18:06 
Аватара пользователя

Сообщения: 12
Поблагодарили: 0 раз.
Александр Сабаев писал(а):
Удивительно, но большинство назвало в качестве причины то, что файл получается большой и не лезет в память.


Я использую SAX и все равно возникают проблемы с файлами больше 8 Мб.

Если обещали помочь, то помогайте. Оптимально код парсера на PHP выложить в общий доступ или дать ссылку или в личку.

ДАННЫЕ ПОСЛЕ ПАРСИНГА У МЕНЯ ВЫГЛЯДЯТ ТАК:
Код:
Array
(
    [categories] => Array
        (
            [0] => Array
                (
                    [id] => 91656
                    [parentId] => 91649
                    [_content] => Ножницы
                )
        )

.....

    [offers] => Array
        (
            [0] => Array
                (
                    [offers] =>
                    [url] => http://mixmarket.biz/clk.plx?id=137260&gid=1234567
                    [price] => 1677
                    [currencyId] => USD
                    [categoryId] => 226667
                    [picture] => Array
                        (
                            [w] => 80
                            [h] => 60
                            [_content] => http://mixmarket.biz/images/of/184/8.jpg
                        )

                    [typePrefix] => Генератор дизельный
                    [vendor] => Array
                        (
                            [id] => 472
                            [_content] => SDMO
                        )

                    [model] => DX 3000
                    [description] => . Производитель - SDMO (Франция) . Максимальная мощность - 3 кВА. Номинальная активная мощность - 2.4 кВт. Выходное напряжение - 230 В (однофазный) . Двигатель - Yanmar L48 . Тип топлива - дизель . Тип охлаждения - воздушное . Тип запуска - ручной . Объем топливного бака - 2.5 л. Время работы на одном баке - 3.7 час. Время работы при 50% нагрузке - 4 час. Генератор - Синхронный Mecc Alte . Габариты - 59х46х48 см. Масса - 54 кг. Исполнение - открытое в раме . Уровень шума (15 м) - 77 дБ.. Класс электростанции - профессиональная
                )
        )

.....

)

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 июн 2006, 09:35 
Аватара пользователя

Сообщения: 5
Поблагодарили: 0 раз.
Господа! Разбудите программистов, хотелось бы все таки получить ответ на свой вопрос, уже полтора месяца в ожидании.
Нужен кусок кода perl скрипта использующего SAX парсер, для парсинга прайсов более 8 Мб. (Techhome, 003 и т.д.), на ultrastore@mail.ru или выложите прямо сюда.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 июн 2006, 16:12 
Аватара пользователя

Сообщения: 7
Поблагодарили: 0 раз.
package MyContentHandler;
use Text::Iconv;
use base qw(XML::SAX::Base);

my $converter = Text::Iconv->new("UTF-8", "CP1251");

sub start_document {
my $self = shift;
$self->{Context}=();
$self->{text} = '';

$total_price = 0;
}

sub end_document {
print "Order total: $total_price\n";
}

sub start_element{
my $self = shift;
my $el = shift;
$name= $el->{LocalName};

my $len=scalar (@{$self->{Context}});
if($len>0)
{
if($len && ($self->{Context}[$len-1] eq 'advertizers') && ($name eq 'adv'))
{
$self->{ADV}=$el->{Attributes};
}
if($len && $self->{Context}[$len-1] eq 'brands' && $name eq 'brand')
{
$self->{BRAND}=$el->{Attributes};
}
if($len && $self->{Context}[$len-1] eq 'offers' && $name eq 'offer')
{
$self->{OFFER}=$el->{Attributes};
}
if($len && $self->{Context}[$len-1] eq 'categories' && $name eq 'category')
{
$self->{CATEGORY}=$el->{Attributes};
}

}
push(@{$self->{Context}},$name);

$currentElement = $local_name;
$self->clear_text();
}

sub end_element{
my $self = shift;
my $el = shift;
my $len=scalar (@{$self->{Context}});

my $text = $converter->convert($self->get_text());
my $name = $el->{LocalName};

if($name eq 'adv')
{
print "рекламадатель:",$self->{ADV}->{"{}id"}->{Value},"\t",$text,"\t",$self->{ADV}->{"{}id"}->{url},"\n";

}
elsif($name eq 'category')
{
print "Рубрика:",$self->{CATEGORY}->{"{}id"}->{Value},"\t",$text,"\n";
}
elsif($name eq 'brand')
{
print "производитель:",$self->{BRAND}->{"{}id"}->{Value},"\t",$text,"\n";
}
elsif($name eq 'offer')
{
print "\n\nтовар:\t",$self->{OFFER}->{"{}id"}->{Value},"\n";
print "Тип:\t",$self->{SUBOFFER}->{'type'},"\n";
print "производитель:\t",$self->{OFFER}->{"{}brandid"}->{Value},"\n";
print "Рубрика:\t",$self->{OFFER}->{"{}cat"}->{Value},"\n";
print "Цена:\t",$self->{SUBOFFER}->{'price'},"\n";
print "картинка:\t",$self->{OFFER}->{"{}src"}->{Value},"\n";
print "url:\t",$self->{SUBOFFER}->{'url'},"\n";
print "Описание:",$self->{SUBOFFER}->{'desc'},"\n";
}
else
{
$self->{SUBOFFER}->{$name}=$text;
}
pop(@{$self->{Context}})."\n";
}

sub display_text {
my $self = shift;
print $self->get_text();
}

sub get_text {
my $self = shift;
my $text = '';
if ( defined( $self->{text} ) ) {
$text = $self->{text};
$self->{text} = '';
}
return $text;
}

sub clear_text {
my $self = shift;
$self->{text} = '';
}

sub characters {
my $self = shift;
my $text = shift;

$self->{text} .= $text->{Data};
}


package main;

use XML::SAX;

XML::SAX->add_parser(q(XML::SAX::PurePerl));

$total_price = 0;
$item_id = '';
$current_element = '';
$item_name = '';
$quantity = '';
$unit_price = '';


my $factory = XML::SAX::ParserFactory->new();
my $parser = $factory->parser( Handler => MyContentHandler->new() );

eval { $parser->parse_uri('http://mixmarket.biz/mixml.plx?id=4294966027'); };
#eval { $parser->parse_uri('test.xml'); #};

print "Error parsing file: $@" if $@;

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 июн 2006, 16:17 
Аватара пользователя

Сообщения: 7
Поблагодарили: 0 раз.
Я сознательно убрал из него все, что касалось структуры хранения у нас в базе (у всех своя) и заменил на печать в выходной поток - для наглядности. В примере может быть использованы не все атрибуты товара из хмл - но этого должно хватить для того чтобы разобраться. как видите все как я и обещал - не в один момент времени документ целиком в памяти не находится - не говоря уже о DOM дереве.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 ноя 2006, 15:24 
Аватара пользователя

Сообщения: 1
Поблагодарили: 0 раз.
А можно выложить аналог кода на php

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему
 [ Сообщений: 8 ] 

   Похожие темы   Ответы   Автор   Просмотры   Последнее сообщение 
В этой теме нет новых непрочитанных сообщений. Геотаргетинг и партнеры с нероссийским АйПи (проблема) +

в форуме Микс-Юни

8

maslov

8246

03 май 2011, 20:37

maslov Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. Партнеры СМ - глобальный геотаргетинг с 10 марта!

[ На страницу: 1, 2 ]

в форуме Миксмаркет в развитии

19

mager

16079

10 мар 2010, 13:28

mager Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. Есть уже сайты партнеры?

в форуме Микс-Товары

1

Yuron

6114

26 июл 2005, 16:46

mager Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. партнеры отключены

в форуме Миксмаркет в развитии

1

technowa

5774

23 июн 2008, 15:06

mixb Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. Зачем рекламодатели всё ещё выбирают цвета для событий?

в форуме Миксмаркет в развитии

3

drivecx

7028

04 июл 2014, 21:10

mager Перейти к последнему сообщению



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
cron


О проекте Новости Пресса о нас Сотрудничество Вакансии Контакты
2005–2011 Партнерская сеть Миксмаркет
Разработка сайта — iji-design / AdLabs
Powered by phpBB Group