|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Paul Kulchenko 2:5020/400 01 Aug 2000 22:30:12 To : All Subject : Re: XML::Dumper -------------------------------------------------------------------------------- Hi, Alexander! Alexander Temerev wrote: > Появилась нужда в модуле XML::Dumper, который бы преобразовывал объекты в > XML. Примерно так: package MyObject; sub new { my $name=shift; my > $r_self={"foo" => "bar", "number" => "3.14", "list" => > [1,2,3], "hash" => {"dot" => "com", "cot" => "dom"}, > "OtherObject" => new OtherObject}; bless $r_self,$name; return $r_self; } my > $object=new MyObject; my $xml=XML::Dumper->process ($object); Должно > получиться что-то вроде: <?xml version="1.0"?> <MyObject foo="bar" > number="3.14"> <list>1</list> <list>2</list> <list>3</list> <hash > dot="com" cot="dom"/> <OtherObject> ... </OtherObject> </MyObject> > Прежде чем самому взяться за написание, хотелось бы выяснить - не изобрел > ли кто велосипед до меня? В идеале это должно работать в обе стороны - то бишь > делаем XML::Dumper->fetch ("кусок XML кода") - и получаем свеженький объект. А > если бы он еще и DTD пытался создавать, так это вообще было бы чудесно... Если > такого нет, я берусь за его написание. Для чего такое нужно, думаю, очевидно > :) ну, во-первых, IMHO, такое преобразование не совсем корректно. В смысле, трудно обобщается. Во-вторых, я бы хотел обобщить задачу, поскольку тоже этим занимаюсь. Мне бы хотелось иметь общую схему сериализации (и десериализации, естественно), причем в нескольких вариантах. Hапример: 1. in: %var = ('a' => 'value_a', 'b' => 'value_b') out: <var> <a>value_a</a> <b>value_b</b> </var> 2. in: $a = 'value_a'; $b = 'value_b'; @var = ($a, $b); out: <var> <a>value_a</a> <b>value_b</b> </var> не реализуемо? имя переменной не достать, даже если передавать по ссылке. java сериализатор такое делает, правда я не копался как. 3. in: $a = name 'a' => 'value_a'; # здесь возвращаются объекты, несущие информацию о $b = name 'b' => 'value_b'; # имени и типе переменной (тип нужен для SOAP) @var = ($a, $b); out: <var> <a>value_a</a> <b>value_b</b> </var> такая схема должна работать и мне она нравится больше, чем 1., но поддерживать желательно обе. Какие есть еще варианты для СИHТАКСИСА сериализации? Кроме имени (мне) еще нужно хранить информацию о типе переменной, или по крайней мере дать возможность указывать этот тип опционально. То, что сделано в XML::Dumper мне к сожалению не подходит, поскольку SOAP накладывает специфические ограничения. Есть идеи по этому поводу? Best wishes, Paul. --- ifmail v.2.15dev5 * Origin: Rostelecom/Internet Centre (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/3555751da17e.html, оценка из 5, голосов 10
|