parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Безымянный 05.04.2010 19:00

@xml2sql[filename;tablename;nodename;fields]

^if(^filename.match[http]){
$d[^file::load[text;$filename;$.timeout(300) $.any-status(1)]]
^if($d.status == 301){$d[^file::load[text;^untaint{$d.LOCATION};$.timeout(300) $.any-status(1)]]}
$d[^xdoc::create{^untaint{$d.text}}]
}{$d[^xdoc::load[$filename]]}

$curnode[^d.getElementsByTagName[$nodename]]

^for[i](0;$curnode-1){^sql_add_delayed[$tablename;^fields.foreach[a;b]{$.[$a][^if(^b.match[^^_]){^b.match[^^_][g]{}}{^curnode.$i.getAttribute[$b]}]}]}
Вот, если в деталях...

На вход поступает XML 800 кб, все данные зашиты в аттрибуты, поля длинна короткая:
<item artid="010019" dt="3" eancode="0743212478624" eanpref="true" fr="100" frdttype="2" listprice="4.99" maxbo="30" mech="0.00" stock="0"/>
Что можно оптимизировать?