# XML into database

**URL:** <https://www.ruby-forum.com/t/xml-into-database/176984>\
**Category:** Rails\
**Created:** [October 9, 2009, 11:36am UTC](https://www.ruby-forum.com/t/xml-into-database/176984 "2009-10-09T11:36:50Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![jhaagmans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bc8723/32.png) [@jhaagmans](https://www.ruby-forum.com/u/jhaagmans)\
**Post date:** [October 9, 2009, 11:36am UTC](https://www.ruby-forum.com/t/xml-into-database/176984/1 "2009-10-09T11:36:50Z")

</div>

Hi,

I’ve already talked about this in another topic, but I’ve found  
another approach.

We have some complex definitions and structures in our database and  
I’d like to make it possible to simplify adding items to the  
application. I’d like to do that using XML. Using XML we’ll define a  
few common item structures that can be used as a template for new  
items. But I don’t want to actually store physical XML-files on the  
server, I want to store the XML in a database. Now my question is: how  
to do that? I know how to store it, but I don’t know how to read it.

The sequence is quite simple. If a user wants to create a new item  
from a template, they select the appropriate template and the XML  
needs to be parsed so that the right values are copied into the right  
tables. Is this possible and how? The XML-parsers I know need to be  
fed from a file and I don’t want to do that.

Thank you!

---

<div class="post-metadata">

**Author:** ![jhaagmans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bc8723/32.png) [@jhaagmans](https://www.ruby-forum.com/u/jhaagmans)\
**Post date:** [October 10, 2009, 12:17am UTC](https://www.ruby-forum.com/t/xml-into-database/176984/2 "2009-10-10T00:17:50Z")

</div>

We do this in the Kete app ([GitHub - kete/kete: Kete was developed by Horowhenua Library Trust and Katipo Communications Ltd. to build a digital library of Horowhenua material.](http://github.com/kete/kete)). Look in lib/  
extended\_fields.rb for example code.

In hindsight, I would probably have been better off to have done this  
with either marshalling or YAML rather than storing XML though.

Cheers,  
Walter

---

<div class="post-metadata">

**Author:** ![jhaagmans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bc8723/32.png) [@jhaagmans](https://www.ruby-forum.com/u/jhaagmans)\
**Post date:** [October 10, 2009, 9:38pm UTC](https://www.ruby-forum.com/t/xml-into-database/176984/3 "2009-10-10T21:38:31Z")

</div>

Thanks for the tip!

---

<div class="post-metadata">

**Author:** ![jhaagmans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bc8723/32.png) [@jhaagmans](https://www.ruby-forum.com/u/jhaagmans)\
**Post date:** [October 11, 2009, 1:20pm UTC](https://www.ruby-forum.com/t/xml-into-database/176984/4 "2009-10-11T13:20:50Z")

</div>

> I would suggest that XML or YAML in the DB is the wrong approach. I  
> understand that you want flexibility without needing to change the  
> schema, so why not consider a document database such as CouchDB? It  
> sounds like this is really what you’re looking for.

Nope, I’m really looking for XML in a MySQL db. I hoped there was  
something like REXML to read XML from a database, but I can’t find it.

We can always consider putting physical XML files somewhere, but I’d  
prefer putting it in the db.

---

<div class="post-metadata">

**Author:** ![jhaagmans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bc8723/32.png) [@jhaagmans](https://www.ruby-forum.com/u/jhaagmans)\
**Post date:** [October 10, 2009, 9:41pm UTC](https://www.ruby-forum.com/t/xml-into-database/176984/5 "2009-10-10T21:41:51Z")

</div>

jhaagmans wrote:

> Hi,
> 
> I’ve already talked about this in another topic, but I’ve found  
> another approach.
> 
> We have some complex definitions and structures in our database and  
> I’d like to make it possible to simplify adding items to the  
> application. I’d like to do that using XML. Using XML we’ll define a  
> few common item structures that can be used as a template for new  
> items. But I don’t want to actually store physical XML-files on the  
> server, I want to store the XML in a database. Now my question is: how  
> to do that? I know how to store it, but I don’t know how to read it.  
> […]

I would suggest that XML or YAML in the DB is the wrong approach. I  
understand that you want flexibility without needing to change the  
schema, so why not consider a document database such as CouchDB? It  
sounds like this is really what you’re looking for.

## Best,

Marnen Laibow-Koser  
[http://www.marnen.org](http://www.marnen.org)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![jhaagmans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bc8723/32.png) [@jhaagmans](https://www.ruby-forum.com/u/jhaagmans)\
**Post date:** [October 11, 2009, 4:36pm UTC](https://www.ruby-forum.com/t/xml-into-database/176984/6 "2009-10-11T16:36:40Z")

</div>

jhaagmans wrote:

> > I would suggest that XML or YAML in the DB is the wrong approach. ï¿½I  
> > understand that you want flexibility without needing to change the  
> > schema, so why not consider a document database such as CouchDB? ï¿½It  
> > sounds like this is really what you’re looking for.
> 
> Nope, I’m really looking for XML in a MySQL db.

Why? From your description, it sounds like a schemaless database like  
CouchDB is ideal here. Why do you specifically need XML?

> I hoped there was  
> something like REXML to read XML from a database, but I can’t find it.

If you use YAML, there’s Rails’ serialize method. But it’s still a  
pretty bad idea.

## Best,

Marnen Laibow-Koser  
[http://www.marnen.org](http://www.marnen.org)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![jhaagmans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bc8723/32.png) [@jhaagmans](https://www.ruby-forum.com/u/jhaagmans)\
**Post date:** [October 12, 2009, 12:43pm UTC](https://www.ruby-forum.com/t/xml-into-database/176984/7 "2009-10-12T12:43:34Z")

</div>

On 11 okt, 16:36, Marnen Laibow-Koser \<rails-mailing-l…@andreas-  
[s.net](http://s.net)\> wrote:

> jhaagmans wrote:
> 
> > > I would suggest that XML or YAML in the DB is the wrong approach. I  
> > > understand that you want flexibility without needing to change the  
> > > schema, so why not consider a document database such as CouchDB? It  
> > > sounds like this is really what you’re looking for.
> 
> > Nope, I’m really looking for XML in a MySQL db.
> 
> Why? From your description, it sounds like a schemaless database like  
> CouchDB is ideal here. Why do you specifically need XML?

Because I have a client who already manually defines these items in  
XML for another application.

---

<div class="post-metadata">

**Author:** ![jhaagmans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/bc8723/32.png) [@jhaagmans](https://www.ruby-forum.com/u/jhaagmans)\
**Post date:** [October 12, 2009, 4:45pm UTC](https://www.ruby-forum.com/t/xml-into-database/176984/8 "2009-10-12T16:45:56Z")

</div>

On Oct 11, 7:19 am, jhaagmans [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > I would suggest that XML or YAML in the DB is the wrong approach. I  
> > understand that you want flexibility without needing to change the  
> > schema, so why not consider a document database such as CouchDB? It  
> > sounds like this is really what you’re looking for.
> 
> Nope, I’m really looking for XML in a MySQL db. I hoped there was  
> something like REXML to read XML from a database, but I can’t find it.

What part of REXML::Document.new(xml\_string\_from\_the\_db) doesn’t work  
for you? 🙂

–Matt J.
