Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Parsing through XML with REXML/XPath
Peter Bailey
9/25/2007 2:34:00 PM
Hi,
I need to sort groups of xml data based on the first instances of
particular elements down deep in the element structure of documents.
regs = []
regs = XPath.match(doc, "//registration")
regs.each do |reg|
codes = XPath.match(regs, "//issue[1]/")# { |element| puts
element.text }
puts codes
end
I'm getting:
<issue code='ENG'>Energy/Nuclear</issue>
<issue code='EDU'>Education</issue>
<issue code='AGR'>Agriculture</issue>
...
There are only 86 entries of <issue> in the document, but, I'm getting
over 2,550 results here for "puts codes!" Obviously, it's looping and I
don't know why. It is pulling just the first entries, which I want, but,
obiously, it's doing it lots and lots of times.
I'm also trying to parse out these results, so that, I only end up with
the actual element text, not any attributes. So, for example, in the
above results, I only want "Energy/Nuclear, Education, and Agriculture,"
not any of the surrounding stuff. So, I've tried this, inside the above:
codes.each do |code|
code.to_s.gsub!(/<issue code='[A-Z]{3}'>(.*?)\/*.*<\/issue>/, "$1")
puts code
end
Thanks,
Peter
--
Posted via
http://www.ruby-...
.
1 Answer
Peter Bailey
9/25/2007 3:37:00 PM
0
Thanks, Mark. Yes, I'm sorry about the lingo. I'm not that versed in
XML-speak yet. But, basically, I want to sort all of the <registration>
data sets in my files, just alphabetically. But, as I said, I need to
put in some headings into my output, and, those headings are essentially
the text that's in the very first instance of the <issue> element. The
<issue> element is a child element to <registration>. Now, your
suggestion with the use of /text() worked, meaning, I got just that text
that I want. That's great. But, it's still looping and giving me many
repeats of these instances.
Here's my e-mail address, if you'd like to strike up a separate
conversation.
Thanks,
Peter
pbailey@bna.com
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Parsing through XML with REXML/XPath
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password