[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[ANN] xml-map

Marcin Raczkowski

7/13/2007 10:02:00 AM

Hello.

Thanks to my bas from softwarelab.eu (little advert)
I'm starting to release code that i wrote so far :)
for now there's little - or no- documentation but i'll be working on it

back to the topic:

xml-map is easy to use XML to ruby object library with rails-like models,
validators and more ^^, it uses vary fast libxml instead of slow and old
REXML, you need version 0.4 of libxml to work properly

you can grab it from svn from xml-map.rubyforge.org

What is done:
- Import valid XML
- autogenerate models
- some validators

what i'm working on:
- all validators from XmlSchema
- autogenerating models with validators from xsd

require 'rubygems'
require 'xml/libxml'

require '../lib/xml_models'

require 'pp'

============================================
> cat sample/sample.rb

tfile = ARGV.shift || "test.xml"
# auogenerate required models
xm=XmlMapper.new({:generate=>true, :file=> $stdout})

#load xml file
doc = XML::Document.file(tfile)
root_node = doc.root

# parase xml and create model instances
rn = xm.parse_xml(root_node)

pp rn

rn.content[0].content<<"dwa"

rn.save(out.xml)

============================================
> cat sample/test.xml
<?xml version="1.0"?>
<root>
<simple>raz</simple>
<Complicated param2="2" param1="string" param3="3">
<simple>dwa</simple>
<simple>trzy</simple>
</Complicated>
</root>
============================================
ruby sample.rb
class RootNode < XmlNode
end

class SimpleNode < XmlNode
end

class ComplicatedNode < XmlNode
end

#===== class generation ends here, you can copy above classes add
attr_accessors for desired attributes

#<RootNode:0xb7810364
@content=
[#<SimpleNode:0xb780fc20 @content=["raz"], @node_name="simple">,
#<ComplicatedNode:0xb780f39c
@content=
[#<SimpleNode:0xb780eac8 @content=["dwa"], @node_name="simple">,
#<SimpleNode:0xb780e640 @content=["trzy"], @node_name="simple">],
@node_name="Complicated",
@param1="string",
@param2="2",
@param3="3">],
@node_name="root">

======================================

soon i'm going to provide more documentation and more compleate support for
xsd and validators, if anyone is interested in helping in this easy but time
consuming work, please let me know ^^

===================================
Marcin Raczkowski
---
Friends teach what you should know
Enemies Teach what you have to know

4 Answers

Marcin Raczkowski

7/13/2007 10:23:00 AM

0

two more things:
- this module was tested on nearly 20mb XML file and worked fine, it made
syncing between database and xml piece of cake (i'm going to relase code that
made comparing between AR models and XmlModels so easy)

- it was NOT tested on strange xmls - so PLEASE send me everything you got,
strange xml's with CDATA, strange characters encodings etc if it's not
parased properly by this library


--
Marcin Raczkowski
---
Friends teach what you should know
Enemies Teach what you have to know

Mark Gallop

7/13/2007 10:53:00 AM

0

Hi Marcin,

Marcin Raczkowski wrote:
> it made syncing between database and xml piece of cake (i'm going to relase code that
> made comparing between AR models and XmlModels so easy)
>
I am looking forward to this. I had just been looking at doing a project
which could use AR <-> xml.

Thanks for releasing!

Cheers,
Mark

Ed Howland

8/13/2007 5:51:00 PM

0

Hi,

Where can one get xml-map from?

Thanks

Ed

On 7/13/07, Marcin Raczkowski <swistak@mailx.expro.pl> wrote:
> Hello.
>
> Thanks to my bas from softwarelab.eu (little advert)
> I'm starting to release code that i wrote so far :)
> for now there's little - or no- documentation but i'll be working on it
>
> back to the topic:
>
> xml-map is easy to use XML to ruby object library with rails-like models,
> validators and more ^^, it uses vary fast libxml instead of slow and old
> REXML, you need version 0.4 of libxml to work properly
>
> you can grab it from svn from xml-map.rubyforge.org
>
> What is done:
> - Import valid XML
> - autogenerate models
> - some validators
>
> what i'm working on:
> - all validators from XmlSchema
> - autogenerating models with validators from xsd
>
> require 'rubygems'
> require 'xml/libxml'
>
> require '../lib/xml_models'
>
> require 'pp'
>
> ============================================
> > cat sample/sample.rb
>
> tfile = ARGV.shift || "test.xml"
> # auogenerate required models
> xm=XmlMapper.new({:generate=>true, :file=> $stdout})
>
> #load xml file
> doc = XML::Document.file(tfile)
> root_node = doc.root
>
> # parase xml and create model instances
> rn = xm.parse_xml(root_node)
>
> pp rn
>
> rn.content[0].content<<"dwa"
>
> rn.save(out.xml)
>
> ============================================
> > cat sample/test.xml
> <?xml version="1.0"?>
> <root>
> <simple>raz</simple>
> <Complicated param2="2" param1="string" param3="3">
> <simple>dwa</simple>
> <simple>trzy</simple>
> </Complicated>
> </root>
> ============================================
> ruby sample.rb
> class RootNode < XmlNode
> end
>
> class SimpleNode < XmlNode
> end
>
> class ComplicatedNode < XmlNode
> end
>
> #===== class generation ends here, you can copy above classes add
> attr_accessors for desired attributes
>
> #<RootNode:0xb7810364
> @content=
> [#<SimpleNode:0xb780fc20 @content=["raz"], @node_name="simple">,
> #<ComplicatedNode:0xb780f39c
> @content=
> [#<SimpleNode:0xb780eac8 @content=["dwa"], @node_name="simple">,
> #<SimpleNode:0xb780e640 @content=["trzy"], @node_name="simple">],
> @node_name="Complicated",
> @param1="string",
> @param2="2",
> @param3="3">],
> @node_name="root">
>
> ======================================
>
> soon i'm going to provide more documentation and more compleate support for
> xsd and validators, if anyone is interested in helping in this easy but time
> consuming work, please let me know ^^
>
> ===================================
> Marcin Raczkowski
> ---
> Friends teach what you should know
> Enemies Teach what you have to know
>
>


--
Ed Howland
http://greenprogrammer.bl...
"The information transmitted is intended only for the person or entity
to which it is addressed and may contain proprietary, confidential
and/or legally privileged material. Any review, retransmission,
dissemination or other use of, or taking of any action in reliance
upon, this information by persons or entities other than the intended
recipient is prohibited. If you received this in error, please contact
the sender and delete the material from all computers."

Gregory Brown

8/13/2007 6:10:00 PM

0

On 8/13/07, Ed Howland <ed.howland@gmail.com> wrote:
> Hi,
>
> Where can one get xml-map from?

You quoted it in your reply.

> > you can grab it from svn from xml-map.rubyforge.org