XML to Ruby?

Is there any Ruby package that will read a XML file and build Ruby
classes for the tags found (classes that can handle reading, writing,
setting attributes, etc), using the object relationships from the XML?
Most preferably, get everything from the DTD and build the Ruby classes
from there?

Best regards,

Jari W.

On 22 Nov, 12:39, Jari W.
[email protected] wrote:

Is there any Ruby package that will read a XML file and build Ruby
classes for the tags found (classes that can handle reading, writing,
setting attributes, etc), using the object relationships from the XML?
Most preferably, get everything from the DTD and build the Ruby classes
from there?

Best regards,

Jari W.

I’ve used REXML which worked very well. The only drawback is that it
is not a validating parser.

Peter.

On Nov 22, 2007, at 9:39 AM, Jari W. wrote:

Is there any Ruby package that will read a XML file and build Ruby
classes for the tags found (classes that can handle reading,
writing, setting attributes, etc), using the object relationships
from the XML? Most preferably, get everything from the DTD and build
the Ruby classes from there?

some time ago, I built a small class to do that, you can check it here:

http://rolando.cl/xmlable/src/xmlable.rb
http://rolando.cl/xmlable/src/test.rb
http://rolando.cl/xmlable/doc/index.html

Best regards,

Jari W.

Regards,

PWR wrote:

Jari W.

I’ve used REXML which worked very well. The only drawback is that it
is not a validating parser.

How do you get REXML to generate Ruby classes?

Best regards,

Jari W.

Rolando A. wrote:

some time ago, I built a small class to do that, you can check it here:

http://rolando.cl/xmlable/src/xmlable.rb
http://rolando.cl/xmlable/src/test.rb
http://rolando.cl/xmlable/doc/index.html

Thanks, but this seems to only make XML data accessible to an existing
class?
It seems like I need to specify a bit better what I need: I’m looking
for a utility that will generate Ruby code (classes) from a
hierarchical XML file.

Let’s say this is the XML data:
mymodule.xml

Some data root.rb:

require ‘mymodule/sub’
module MyModule
class Root < SomeBaseClass
attr_accessor :sub_elements # Array
# Some more stuff
end

sub.rb:

module MyModule
class Sub < SomeBaseClass
attr_accessor :id
# Some more stuff
end
end

The more I think about it, this kind of utility probably is required to
analyze the DTD rather than the XML to get the proper relationships. Any
such utility available?

Best regards,

Jari W.

Jari W. wrote:

Jari W.

try xml-mapper it builds classes from XML files

On Nov 22, 2007, at 11:06 AM, Jari W. wrote:

It seems like I need to specify a bit better what I need: I’m
looking for a utility that will generate Ruby code (classes) from
a hierarchical XML file.

well, that’s exactly what my class do: convert from xml to ruby
classes, convert from ruby classes to xml. Check the test file for
examples.

Rolando A.
Phone: +56-9 97851962

On Nov 22, 7:06 am, Jari W.
[email protected] wrote:

<sub id="2>Some more data</sub>
 # Some more stuff

The more I think about it, this kind of utility probably is required to
analyze the DTD rather than the XML to get the proper relationships. Any
such utility available?

I really have no idea how your XML file above maps to the output you
describe. It appears that you just look at the unique element names
and create classes from them. You ignore the hierarchy of the XML
file, you ignore all the attributes of the elements, and you ignore
all the text content of the elements?

So, you just need something like this:

raw_xml = IO.read( ‘myfile.xml’ )
all_tag_names = raw_xml.scan( /<(\w+)/ ).flatten.uniq
all_tag_names.each{ |tag_name|

use ERB here to create new files using

tag_name.capitalize as the foundation for the class name

}

Thanks, Bob! You understood despite my bad sample code.

By reading the description of your Xampl tool, this seems to be the tool
I need! In my case, analyzing a bunch of XML files like your tool do
would work as good as working on the DTD.

Best regards,

Jari W.

Hi,

On 22-Nov-07, at 10:34 PM, Phrogz wrote:

class Root < SomeBaseClass end

and create classes from them. You ignore the hierarchy of the XML
file, you ignore all the attributes of the elements, and you ignore
all the text content of the elements?

I think Jari might be confusing things with the test case he provided.
It seems to me that he has shown the nesting of elements/classes (e.g.
sub_elements – the ‘sub’ is an element name) and attributes (e.g. the
‘id’ accessor – the ‘id’ is an attribute name). He’s missed the text
(and all that that implies), but he’s looking for the tool not
promoting one so that’s okay.

FWIW, my thing, xampl, generates 2 classes, 2 modules, and 59 methods
for Jari’s example. Xampl defines a bunch of stuff to help you work
with the generated code. Xampl doesn’t use DTDs or schemas to do this.

Cheers,
Bob


Bob H. – tumblelog at
http://www.recursive.ca/so/
Recursive Design Inc. – weblog at
http://www.recursive.ca/hutch
http://www.recursive.ca/ – works on
http://www.raconteur.info/cms-for-static-content/home/

Hi

On 23-Nov-07, at 10:24 AM, Jari W. wrote:

Thanks, Bob! You understood despite my bad sample code.

By reading the description of your Xampl tool, this seems to be the
tool I need! In my case, analyzing a bunch of XML files like your
tool do would work as good as working on the DTD.

Great! If you need any help, let me know and I’ll do what I can. An
understatement would be “the documentation is sparse”.

Cheers,
Bob

On Nov 22, 7:06 am, Jari W.

class Root < SomeBaseClass end

and create classes from them. You ignore the hierarchy of the XML
you work with the generated code. Xampl doesn’t use DTDs or schemas

use ERB here to create new files using

tag_name.capitalize as the foundation for the class name

}


Bob H. – tumblelog at http://www.recursive.ca/so/
Recursive Design Inc. – weblog at http://www.recursive.ca/hutch
http://www.recursive.ca/ – works on http://www.raconteur.info/cms-for-static-content/home/


Bob H. – tumblelog at
http://www.recursive.ca/so/
Recursive Design Inc. – weblog at
http://www.recursive.ca/hutch
http://www.recursive.ca/ – works on
http://www.raconteur.info/cms-for-static-content/home/

It’s tedious sometimes to work with language and need to write all the code for data models, I use this XML to Ruby converter may help XML to RUBY
(https://jsonformatter.org/xml-to-ruby) .
I hope this helps.

It is now a separate Ruby library that you can download from - RubyGem