# HG changeset patch # User Sergey # Date 1251918674 -14400 # Node ID bb8d67f811ea2e29e846f557f6d9063744050586 # Parent 955b2324c1bf1bb73f1609a1a7dbdbc0f3345ee0# Parent 75980091813b44869c4544532b493fd03a83677f merge heads diff -r 75980091813b -r bb8d67f811ea Lib/IMPL/DOM/Navigator.pm diff -r 75980091813b -r bb8d67f811ea Lib/IMPL/DOM/Navigator/Builder.pm diff -r 75980091813b -r bb8d67f811ea Lib/IMPL/DOM/XMLReader.pm --- a/Lib/IMPL/DOM/XMLReader.pm Wed Sep 02 17:47:44 2009 +0400 +++ b/Lib/IMPL/DOM/XMLReader.pm Wed Sep 02 23:11:14 2009 +0400 @@ -26,6 +26,21 @@ $parser->parse($in); } +sub ParseFile { + my ($this,$in) = @_; + + my $parser = new XML::Parser( + Handlers => { + Start => sub {shift; goto &OnStart($this,@_)}, + End => sub {shift; goto &OnEnd($this,@_)}, + Char => sub {shift; goto &OnChar($this,@_)} + } + ); + + $parser->parsefile($in); +} + + sub OnBegin { my ($this,$element,%attrs) = @_; @@ -45,3 +60,21 @@ } 1; + +__END__ + +=pod + +=head1 SYNOPSIS + +my $reader = new IMPL::DOM::XMLReader(Navigator => $DomBuilder); +my $obj = $reader->parsefile("data.xml"); + +=head2 DESCRIPTION + +Простой класс, использующий навигатор для постороения документа. В зависимости от +используемого навигатора может быть получен различный результат. + +Навигатор должен поодерживать методы C и C + +=cut diff -r 75980091813b -r bb8d67f811ea _test/Resources/test.schema --- a/_test/Resources/test.schema Wed Sep 02 17:47:44 2009 +0400 +++ b/_test/Resources/test.schema Wed Sep 02 23:11:14 2009 +0400 @@ -1,8 +1,10 @@ + + diff -r 75980091813b -r bb8d67f811ea impl.kpf --- a/impl.kpf Wed Sep 02 17:47:44 2009 +0400 +++ b/impl.kpf Wed Sep 02 23:11:14 2009 +0400 @@ -118,6 +118,32 @@ + + + + + + 9011 + + + Lib/IMPL/DOM/Navigator/Builder.pm + + Perl + + + + application/x-www-form-urlencoded + GET + 1 + 0 + 0 + + + enabled + + + default + @@ -144,6 +170,32 @@ default + + + + + + 9011 + + + Lib/IMPL/DOM/XMLReader.pm + + Perl + + + + application/x-www-form-urlencoded + GET + 1 + 0 + 0 + + + enabled + + + default +