--00163646d0388fc60b04a0127d2c Content-Type: text/plain; charset=ISO-8859-1 On Fri, Apr 1, 2011 at 9:22 PM, Kyle X. <haebooty / yahoo.com> wrote: > Thank you Jesus, that is exactly what I was looking for and it works > great! Here's the same with REXML. 09:12:25 Temp$ ./rx2.rb Approach 1 117.4 119.7 0. Approach 2 117.4 119.7 0. Approach 3 117.4 119.7 0.0 09:12:45 Temp$ cat -n rx2.rb 1 #!/bin/env ruby19 2 3 require 'rexml/document' 4 5 doc EXML::Document.new(DATA.read) 6 7 puts 'Approach 1' 8 9 REXML::XPath.each(doc, "//*[@id 1671']//@ref") do |e| 10 REXML::XPath.each(doc, "//*[@id {e.value}']//IfcLengthMeasure/text()") do |lm| 11 puts lm 12 end 13 end 14 15 puts 'Approach 2' 16 17 refs EXML::XPath.each(doc, "//*[@id 1671']//@ref").map {|e| e.value} 18 values efs.map {|r| REXML::XPath.each(doc, "//*[@id {r}']//IfcLengthMeasure/text()").to_a}.flatten 19 puts values 20 21 puts 'Approach 3' 22 23 refs EXML::XPath.each(doc, "//*[@id 1671']//@ref").map {|e| e.value} 24 values efs.map {|r| REXML::XPath.each(doc, "//*[@id {r}']//IfcLengthMeasure/text()").map {|x| x.value.to_f}}.flatten 25 puts values 26 27 __END__ 28 <root xmlns:exp ttp://foo" xmlns:xsi ttp://bar"> 29 <IfcWallStandardCase id 1677"> 30 <ObjectPlacement> 31 <IfcLocalPlacement xsi:nil rue" ref 1671"/> 32 </ObjectPlacement> 33 </IfcWallStandardCase> 34 35 <IfcAxis2Placement3D id 1671"> 36 <Location> 37 <IfcCartesianPoint xsi:nil rue" ref 1667"/> 38 </Location> 39 </IfcAxis2Placement3D> 40 41 <IfcCartesianPoint id 1667"> 42 <Coordinates id 1670" exp:cType ist"> 43 <IfcLengthMeasure exp:pos ">117.4</IfcLengthMeasure> 44 <IfcLengthMeasure exp:pos">119.7</IfcLengthMeasure> 45 <IfcLengthMeasure exp:pos">0.</IfcLengthMeasure> 46 </Coordinates> 47 </IfcCartesianPoint> 48 </root> 09:12:46 Temp$ Have fun! Cheers robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/ --00163646d0388fc60b04a0127d2c Content-Type: application/x-sh; name="rx2.rb" Content-Disposition: attachment; filename="rx2.rb" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gm32chhu0 IyEvYmluL2VudiBydWJ5MTkKCnJlcXVpcmUgJ3JleG1sL2RvY3VtZW50JwoKZG9jID0gUkVYTUw6 OkRvY3VtZW50Lm5ldyhEQVRBLnJlYWQpCgpwdXRzICdBcHByb2FjaCAxJwoKUkVYTUw6OlhQYXRo LmVhY2goZG9jLCAiLy8qW0BpZD0naTE2NzEnXS8vQHJlZiIpIGRvIHxlfAogIFJFWE1MOjpYUGF0 aC5lYWNoKGRvYywgIi8vKltAaWQ9JyN7ZS52YWx1ZX0nXS8vSWZjTGVuZ3RoTWVhc3VyZS90ZXh0 KCkiKSBkbyB8bG18CiAgICBwdXRzIGxtCiAgZW5kCmVuZAoKcHV0cyAnQXBwcm9hY2ggMicKCnJl ZnMgPSBSRVhNTDo6WFBhdGguZWFjaChkb2MsICIvLypbQGlkPSdpMTY3MSddLy9AcmVmIikubWFw IHt8ZXwgZS52YWx1ZX0KdmFsdWVzID0gcmVmcy5tYXAge3xyfCBSRVhNTDo6WFBhdGguZWFjaChk b2MsICIvLypbQGlkPScje3J9J10vL0lmY0xlbmd0aE1lYXN1cmUvdGV4dCgpIikudG9fYX0uZmxh dHRlbgpwdXRzIHZhbHVlcwoKcHV0cyAnQXBwcm9hY2ggMycKCnJlZnMgPSBSRVhNTDo6WFBhdGgu ZWFjaChkb2MsICIvLypbQGlkPSdpMTY3MSddLy9AcmVmIikubWFwIHt8ZXwgZS52YWx1ZX0KdmFs dWVzID0gcmVmcy5tYXAge3xyfCBSRVhNTDo6WFBhdGguZWFjaChkb2MsICIvLypbQGlkPScje3J9 J10vL0lmY0xlbmd0aE1lYXN1cmUvdGV4dCgpIikubWFwIHt8eHwgeC52YWx1ZS50b19mfX0uZmxh dHRlbgpwdXRzIHZhbHVlcwoKX19FTkRfXwo8cm9vdCB4bWxuczpleHA9Imh0dHA6Ly9mb28iIHht bG5zOnhzaT0iaHR0cDovL2JhciI+CjxJZmNXYWxsU3RhbmRhcmRDYXNlIGlkPSJpMTY3NyI+CiA8 T2JqZWN0UGxhY2VtZW50PgogICA8SWZjTG9jYWxQbGFjZW1lbnQgeHNpOm5pbD0idHJ1ZSIgcmVm PSJpMTY3MSIvPgogPC9PYmplY3RQbGFjZW1lbnQ+CjwvSWZjV2FsbFN0YW5kYXJkQ2FzZT4KCjxJ ZmNBeGlzMlBsYWNlbWVudDNEIGlkPSJpMTY3MSI+CiA8TG9jYXRpb24+CiAgIDxJZmNDYXJ0ZXNp YW5Qb2ludCB4c2k6bmlsPSJ0cnVlIiByZWY9ImkxNjY3Ii8+CiA8L0xvY2F0aW9uPgo8L0lmY0F4 aXMyUGxhY2VtZW50M0Q+Cgo8SWZjQ2FydGVzaWFuUG9pbnQgaWQ9ImkxNjY3Ij4KIDxDb29yZGlu YXRlcyBpZD0iaTE2NzAiIGV4cDpjVHlwZT0ibGlzdCI+CiAgIDxJZmNMZW5ndGhNZWFzdXJlIGV4 cDpwb3M9IjAiPjExNy40PC9JZmNMZW5ndGhNZWFzdXJlPgogICA8SWZjTGVuZ3RoTWVhc3VyZSBl eHA6cG9zPSIxIj4xMTkuNzwvSWZjTGVuZ3RoTWVhc3VyZT4KICAgPElmY0xlbmd0aE1lYXN1cmUg ZXhwOnBvcz0iMiI+MC48L0lmY0xlbmd0aE1lYXN1cmU+CiA8L0Nvb3JkaW5hdGVzPgo8L0lmY0Nh cnRlc2lhblBvaW50Pgo8L3Jvb3Q+Cg --00163646d0388fc60b04a0127d2c--