ok Jeff i solved problem , using "doc" was a bad mistake :) thanks for
your support ,here is the last codes

                while reader.read
                        case reader.name
                                when "Brand_name"
                                name_from_xml = reader.read_string
                                Brand.create( :name => name_from_xml )
                        end
                end

----------------------------

now i have to solve another problem :) do you know how can i get a
brand_name using filter brand_id

                while reader.read
                        case reader.read_string
                                when 55
                               -------magic line i couldnt find :)
----------
                        end
                end

magic line must be get brand_name value "Dell" using "55"

Sample xml code ===>>  <Brand><Brand_id>55</Brand_id><Brand_name>Dell</
Brand_name></Brand>


On Jun 4, 9:36 pm, "Jeffrey L. Taylor" <r...@abluz.dyndns.org> wrote:
> I'm afraid I don't understand what you are trying to do here.  'doc' isn't in
> the example below.  So how the loop would change its value, I am unclear.  It
> seems like you are saying a loop with an unchanging condition runs forever.
> Yes, it does.
>
> Did you intend to do this:
>
> while reader.read
>   puts reader.read_string
> end
>
> HTH
>   Jeff
>
> Quoting lecielbleu <canal...@gmail.com>:
>
>
>
> > i tried also
> > while doc == true
> > while doc = 1
> > while doc
>
> > results dont change....
>
> > On Jun 4, 12:51 pm, lecielbleu <canal...@gmail.com> wrote:
> > > i guess problem is while reader line because when i run basic code
> > > below :
>
> > > while doc == true
> > >                         puts reader.read_string
> > >                 end
>
> > > strings never stops in the command line , it turns infinite loop.
>
> > > On Jun 4, 12:48 am, "Jeffrey L. Taylor" <r...@abluz.dyndns.org> wrote:
>
> > > > There are no <xml> header tags.  I have no idea how libXML will behave. 
> > > >  It
> > > > isn't very tolerant of invalid input.  Try adding the puts statements 
> > > > I've
> > > > inserted below to find out how far it is getting.
>
> > > > Quoting lecielbleu <canal...@gmail.com>:
>
> > > > > my xml data seems like that : <Brands><Brand><Brand_id>2</
> > > > > Brand_id><Brand_name>HP</Brand_name></Brand>
> > > > > and here is my codes
>
> > > > > def xml_testing
> > > > >            require'xml'
> > > > >            reader = XML::Reader.file('c:/brands.xml')
>
> > > > >            stack = []
> > > > >            while reader
> > > > >              case reader.node_type
> > > > >              when XML::Reader::TYPE_ELEMENT
> > > > >                # opening tag
> > > > >                stack << reader.name
>
> > > >                     puts "BEGIN #{stack.join('/')}">                
> > > > stack.pop if reader.empty_element?
>
> > > >                     puts "END #{stack.join('/')}"  if 
> > > > reader.empty_element?>              when XML::Reader::TYPE_TEXT, 
> > > > XML::Reader::TYPE_CDATA
> > > > >                path = stack.join('/')
> > > > >                case path
> > > > >                when 'Brands/Brand/Brand_name'
> > > > >                  puts reader.value         # simple content
> > > > >               when XML::Reader::TYPE_END_ELEMENT
> > > > >                # closing tag
>
> > > >                     puts "END #{stack.join('/')}"
>
> > > > >                stack.pop
> > > > >              end
> > > > >      end
> > > > >      end
>
> > > > >            flash.now[:message]="brands read"
> > > > >    end
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to