Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.ruby > #2640
| Path | csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.dougwise.org!nntpfeed.proxad.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!de-l.enfer-du-nord.net!feeder2.enfer-du-nord.net!talisker.lacave.net!lacave.net!not-for-mail |
|---|---|
| From | "Kyle X." <haebooty@yahoo.com> |
| Newsgroups | comp.lang.ruby |
| Subject | Re: Can you search in REXML by attributes? |
| Date | Mon, 11 Apr 2011 13:57:42 -0500 |
| Organization | Service de news de lacave.net |
| Lines | 103 |
| Message-ID | <3eb231103a780e91a17cc5b95fd82ddf@ruby-forum.com> (permalink) |
| References | <6680e1dd986ba2ce87d806950a81ee57@ruby-forum.com> <BANLkTim=ZwXUL-1hoLvfDzN8EUCUQDk1Vw@mail.gmail.com> <07d88b73a8b6b59812b5fed98c782aca@ruby-forum.com> <AANLkTikDnWpKcMM70U1VjsE5QJv8kpAbkFsKLKnyijtG@mail.gmail.com> <cce24af37a85d53425022f133364bb62@ruby-forum.com> <560f26c9f7549339ef393be5559307fd@ruby-forum.com> <BANLkTikxs8g3Gq6OGNhT7p6oGMUA4RUVNw@mail.gmail.com> |
| NNTP-Posting-Host | bristol.highgroove.com |
| Content-Type | text/plain; charset=UTF-8 |
| Content-Transfer-Encoding | 7bit |
| X-Trace | talisker.lacave.net 1302548275 98680 65.111.164.187 (11 Apr 2011 18:57:55 GMT) |
| X-Complaints-To | abuse@lacave.net |
| NNTP-Posting-Date | Mon, 11 Apr 2011 18:57:55 +0000 (UTC) |
| In-Reply-To | <BANLkTikxs8g3Gq6OGNhT7p6oGMUA4RUVNw@mail.gmail.com> |
| X-Received-From | This message has been automatically forwarded from the ruby-talk mailing list by a gateway at comp.lang.ruby. If it is SPAM, it did not originate at comp.lang.ruby. Please report the original sender, and not us. Thanks! For more details about this gateway, please visit: http://blog.grayproductions.net/categories/the_gateway |
| X-Mail-Count | 381304 |
| X-Ml-Name | ruby-talk |
| X-Rubymirror | Yes |
| X-Ruby-Talk | <3eb231103a780e91a17cc5b95fd82ddf@ruby-forum.com> |
| Xref | x330-a1.tempe.blueboxinc.net comp.lang.ruby:2640 |
Show key headers only | View raw
> This works for me:
>
> $ cat noko.rb && ruby -rubygems noko.rb
> require 'nokogiri'
>
> doc = Nokogiri::XML(File.read("one.xml"))
> reference = doc.css("IfcCartesianPoint Coordinates
> IfcLengthMeasure").first
> puts reference.text
>
> 117.4
>
> But if I leave a space before IfcCartesianPoint in the call to the css
> method I get a parser error (`on_error': unexpected ' ' after ''
> (Nokogiri::CSS::SyntaxError)). This is my file one.xml:
>
> <root xmlns:exp="http://foo" xmlns:xsi="http://bar">
> <IfcWallStandardCase id="i1677">
> <ObjectPlacement>
> <IfcLocalPlacement xsi:nil="true" ref="i1671"/>
> </ObjectPlacement>
> </IfcWallStandardCase>
>
> <IfcAxis2Placement3D id="i1671">
> <Location>
> <IfcCartesianPoint xsi:nil="true" ref="i1667"/>
> </Location>
> </IfcAxis2Placement3D>
>
> <IfcCartesianPoint id="i1667">
> <Coordinates id="i1670" exp:cType="list">
> <IfcLengthMeasure exp:pos="0">117.4</IfcLengthMeasure>
> <IfcLengthMeasure exp:pos="1">119.7</IfcLengthMeasure>
> <IfcLengthMeasure exp:pos="2">0.</IfcLengthMeasure>
> </Coordinates>
> </IfcCartesianPoint>
> </root>
>
> This works too:
>
> doc.css("IfcCartesianPoint Coordinates IfcLengthMeasure").each {|el|
> puts el.text}
>
> Produces:
>
> 117.4
> 119.7
> 0.
Thank you for your reply. When I continue to try and read the file I
have it keeps returning nil values and thus doesn't work. But when I
copy and paste the xml you have written over the file I am trying to
read then it does work. I understand that the path is slightly
different but using the xpath command-
doc.xpath("//IfcCartesianPoint/Coordinates/IfcLengthMeasure").each {|el|
puts el.text}
It should skip ahead to the first appearance of IfcCartesianPoint, much
the same as it works for using REXML xpath, no? As this same sting of
IfcCartesianPoint/Coordinates/IfcLengthMeasure appears in this file.
Based on the documentation here -
(http://nokogiri.org/tutorials/searching_a_xml_html_document.html)
I think it should be working but it always returns nil.
I have attached the xml file I am trying to read and was wondering if
you could see where my error is occurring. The first instance of
IfcCartesianPoint/Coordinates/IfcLengthMeasure appears on line 225.
>
> Maybe it's the way you are passing the file to Nokogiri::XML? By the
> way, in your way you are not closing the file handler. If you want to
> pass Nokogiri the file instead of reading it yourself you can do:
>
> doc = nil
> File.open("one.xml") {|f| doc = Nokogiri::XML(f)}
>
> or
>
> doc = File.open("one.xml") {|f| Nokogiri::XML(f)}
>
> This way, the file is properly closed.
>
> Jesus.
Is there an advantage to using .open vs .read? The program I am writing
has to grab lots of information from the xml, maybe 300 items, would it
make a difference in speed to use one vs the other? Also for me to read
a file at say c:\one.xml for it to read I have to write -
doc = File.open("/one.xml") {|f| Nokogiri::XML(f)}
Another form will not read including "\one.xml"
Thank you again for your time, you have been most helpful and it is
greatly appreciated.
Attachments:
http://www.ruby-forum.com/attachment/6114/one.xml
--
Posted via http://www.ruby-forum.com/.
Back to comp.lang.ruby | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Can you search in REXML by attributes? "Kyle X." <haebooty@yahoo.com> - 2011-03-31 19:53 -0500
Re: Can you search in REXML by attributes? 7stud -- <bbxx789_05ss@yahoo.com> - 2011-03-31 20:27 -0500
Re: Can you search in REXML by attributes? 7stud -- <bbxx789_05ss@yahoo.com> - 2011-03-31 20:45 -0500
Re: Can you search in REXML by attributes? "Kyle X." <haebooty@yahoo.com> - 2011-04-01 11:27 -0500
Re: Can you search in REXML by attributes? Jesús Gabriel y Galán <jgabrielygalan@gmail.com> - 2011-04-01 12:19 -0500
Re: Can you search in REXML by attributes? "Kyle X." <haebooty@yahoo.com> - 2011-04-10 18:01 -0500
Re: Can you search in REXML by attributes? "Kyle X." <haebooty@yahoo.com> - 2011-04-10 18:27 -0500
Re: Can you search in REXML by attributes? Jesús Gabriel y Galán <jgabrielygalan@gmail.com> - 2011-04-11 02:37 -0500
Re: Can you search in REXML by attributes? "Kyle X." <haebooty@yahoo.com> - 2011-04-11 13:57 -0500
Re: Can you search in REXML by attributes? Jesús Gabriel y Galán <jgabrielygalan@gmail.com> - 2011-04-12 03:17 -0500
Re: Can you search in REXML by attributes? Robert Klemme <shortcutter@googlemail.com> - 2011-04-12 04:46 -0500
Re: Can you search in REXML by attributes? "Kyle X." <haebooty@yahoo.com> - 2011-04-12 14:39 -0500
Re: Can you search in REXML by attributes? Jesús Gabriel y Galán <jgabrielygalan@gmail.com> - 2011-04-12 15:37 -0500
Re: Can you search in REXML by attributes? "Kyle X." <haebooty@yahoo.com> - 2011-04-01 14:22 -0500
Re: Can you search in REXML by attributes? "Kyle X." <haebooty@yahoo.com> - 2011-04-04 13:44 -0500
Re: Can you search in REXML by attributes? "Kyle X." <haebooty@yahoo.com> - 2011-04-19 15:42 -0500
Re: Can you search in REXML by attributes? "Kyle X." <haebooty@yahoo.com> - 2011-04-20 02:22 -0500
csiph-web