From: Peter Bailey Date: 2007-09-25T05:01:00+09:00 Subject: Re: getting XPath in REXML to dive deeper Gavin Kistner wrote: > Peter Bailey wrote: >> I'm finally using REXML instead of plain vanilla Ruby to convert XML >> data. I've learned a bit about XPath and how REXML can use it. I've got >> a sample XML file whose root element is . Underneath that >> element are a bunch of children elements. So, when I do the instruction >> listed below, I get all of them. But, I don't get the last two elements >> that, to me anyway, are children, too. The only thing different about >> them is that they have children, too. Does anyone know the nomenclature >> for getting ALL of the children of an element, not just those that are >> immediate children. I guess I want grandkids, too! >> >> XPath.each(doc, "//registration/*") { |element| puts element.text } > > The term you are looking for is 'descendants'. In XPath, '/' is > shorthand for the 'child' axis. You want the 'descendant' axis, which > has the shorthand (that you already used) of '//'. > > So "//registration//*" is "At any level, find an element named > 'registration', and then find every element below any of them." > > You possible want "registration//*" which is "every element in the > entire XML file at every level except for the root node", but that seems > rather pointless. (Why have a hierarchy in the XML if you're throwing > away the meaning?) Perhaps that will work for you, or perhaps you should > think further about exactly what elements you really want to traverse. > > Hope that helps (oh, and this has nothing to do with Ruby, BTW :p) > Gavin Yes, this helps. Thanks, Gavin. What I did, to get everything I needed was this: XPath.each(doc, "//registration//*") { |element| puts element.text } I just put in a second "/" after registration. That picked up ALL of the descendants, and the grand-child elements, or, whatever they're called. My only problem is that the output is kind of spacey, with a lot more white space before those grand-child elements. -Peter -- Posted via http://www.ruby-forum.com/.