[ Сообщений: 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

10003

03 май 2011, 20:37

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

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

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

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

19

mager

19577

10 мар 2010, 13:28

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

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

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

1

Yuron

7294

26 июл 2005, 16:46

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

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

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

1

technowa

6545

23 июн 2008, 15:06

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

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

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

3

drivecx

10027

04 июл 2014, 21:10

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



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


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