Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Basic XML to nested Array

Reply
Thread Tools

Basic XML to nested Array

 
 
James Jhfghgfhgf
Guest
Posts: n/a
 
      08-06-2009
Hey,

I've been having some trouble getting to grips with the various XML
libraries, I just want to put together a ruby script that will convert a
basic XML file into a nested array then just output that array to the
console.

The XML looks like this:
<vector>
<point>
<x>1018.550659</x>
<y>558.138367</y>
<z>102.505821</z>
</point>
<point>
<x>1013.557495</x>
<y>560.874878</y>
<z>107.041840</z>
</point>
<point>
<x>1008.563049</x>
<y>563.611267</y>
<z>111.577576</z>
</point>
</vector>
<vector>
<point>
<x>1030.809204</x>
<y>551.722961</y>
<z>86.581741</z>
</point>
<point>
<x>1027.500854</x>
<y>553.190613</y>
<z>95.061058</z>
</point>
</vector>

and I want to make it this:
[[[1018.550659],[558.138367],[102.505821]],[[1013.557495],[560.874878],[107.041840]],[[1008.563049],[563.611267],[111.577576]]],[[[1030.809204],[551.722961],[86.581741]],[[1027.500854],[553.190613],[95.061058]]]

Anyone know the best way to go about this?

Thanks very much!
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Heesob Park
Guest
Posts: n/a
 
      08-06-2009
Hi,

2009/8/6 James Jhfghgfhgf <>:
> Hey,
>
> I've been having some trouble getting to grips with the various XML
> libraries, I just want to put together a ruby script that will convert a
> basic XML file into a nested array then just output that array to the
> console.
>
> The XML looks like this:
> <vector>
> =C2=A0<point>
> =C2=A0 =C2=A0 =C2=A0<x>1018.550659</x>
> =C2=A0 =C2=A0 =C2=A0<y>558.138367</y>
> =C2=A0 =C2=A0 =C2=A0<z>102.505821</z>
> =C2=A0</point>
> =C2=A0<point>
> =C2=A0 =C2=A0 =C2=A0<x>1013.557495</x>
> =C2=A0 =C2=A0 =C2=A0<y>560.874878</y>
> =C2=A0 =C2=A0 =C2=A0<z>107.041840</z>
> =C2=A0</point>
> =C2=A0<point>
> =C2=A0 =C2=A0 =C2=A0<x>1008.563049</x>
> =C2=A0 =C2=A0 =C2=A0<y>563.611267</y>
> =C2=A0 =C2=A0 =C2=A0<z>111.577576</z>
> =C2=A0</point>
> </vector>
> <vector>
> =C2=A0<point>
> =C2=A0 =C2=A0 =C2=A0<x>1030.809204</x>
> =C2=A0 =C2=A0 =C2=A0<y>551.722961</y>
> =C2=A0 =C2=A0 =C2=A0<z>86.581741</z>
> =C2=A0</point>
> =C2=A0<point>
> =C2=A0 =C2=A0 =C2=A0<x>1027.500854</x>
> =C2=A0 =C2=A0 =C2=A0<y>553.190613</y>
> =C2=A0 =C2=A0 =C2=A0<z>95.061058</z>
> =C2=A0</point>
> </vector>
>
> and I want to make it this:
> [[[1018.550659],[558.138367],[102.505821]],[[1013.557495],[560.874878],[1=

07.041840]],[[1008.563049],[563.611267],[111.577576]]],[[[1030.809204],[551=
722961],[86.581741]],[[1027.500854],[553.190613],[95.061058]]]
>
> Anyone know the best way to go about this?
>

Your xml file is missing the root element.
If your xml file is 'a.xml', you can do something like this:

require 'rexml/document'
doc =3D REXML:ocument.new("<root>"+File.read("a.xml")+"</root>")
res =3D doc.elements.to_a("/*/*").map{|e1|
e1.elements.to_a.map{|e2|e2.elements.to_a.map{|e3| e3.text}}
}
p res


Regards,

Park Heesob

 
Reply With Quote
 
 
 
 
James Jhfghgfhgf
Guest
Posts: n/a
 
      08-06-2009
Yeah the program outputting this stuff doesn't add a root element so
great tip there, it worked perfectly thanks Heesob!

> require 'rexml/document'
> doc = REXML:ocument.new("<root>"+File.read("a.xml")+"</root>")
> res = doc.elements.to_a("/*/*").map{|e1|
> e1.elements.to_a.map{|e2|e2.elements.to_a.map{|e3| e3.text}}
> }
> p res

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Basic XML Parsing question using System.XML Originlabs XML 0 04-23-2008 03:24 PM
dealing with nested xml within nested xml within...... Ultrus Python 3 07-09-2007 09:00 PM
Different results parsing a XML file with XML::Simple (XML::Sax vs. XML::Parser) Erik Wasser Perl Misc 5 03-05-2006 10:09 PM
Nested Vector Nester Classes are Nested in my Brain Chad E. Dollins C++ 3 11-08-2005 04:46 AM
Nested iterators (well, not nested exactly...) Russ Perry Jr Java 2 08-20-2004 06:51 PM



Advertisments