jQuery: The Write Less, Do More JavaScript Library

NEW: XML to JSON Plugin

View: New views
17 Messages — Rating Filter:   Alert me  

NEW: XML to JSON Plugin

by Diego A. :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


I wrote this a few months but didn't have the time to share it. Now
that I've re-done the documentation for 2 of my plugins I thought I'd
give it a few hours, knock some examples together and share it with
the whole world (ok, maybe just a few people).

Basic example:
var xml = '<xml><message>Hello world</message></xml>';
var json = $.xml2json(xml);
alert(json.message); // shows "Hello world"

Ajax example:
var file = 'data/hello.xml'; //<xml><message>Hello world</message></
xml>
$.get(file, function(xml){
 var json = $.xml2json(xml);
 alert(json.message);
});

See the documentation page for more examples and demos.
XML to JSON Plugin - http://fyneworks.com/jquery/xml-to-json/

As always, feedback is welcome!

Cheers,
Diego

Re: NEW: XML to JSON Plugin

by Alexsandro_xpt :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Very good!!!

Are possible to do reverse?



--
Alexsandro
www.alexsandro.com.br

On 4 jul, 12:34, Diego <diego.a...@...> wrote:

> I wrote this a few months but didn't have the time to share it. Now
> that I've re-done the documentation for 2 of my plugins I thought I'd
> give it a few hours, knock some examples together and share it with
> the whole world (ok, maybe just a few people).
>
> Basic example:
> var xml = '<xml><message>Hello world</message></xml>';
> var json = $.xml2json(xml);
> alert(json.message); // shows "Hello world"
>
> Ajax example:
> var file = 'data/hello.xml'; //<xml><message>Hello world</message></
> xml>
> $.get(file, function(xml){
>  var json = $.xml2json(xml);
>  alert(json.message);
>
> });
>
> See the documentation page for more examples and demos.
> XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
>
> As always, feedback is welcome!
>
> Cheers,
> Diego

Re: NEW: XML to JSON Plugin

by malsup :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


> See the documentation page for more examples and demos.
> XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
>
> As always, feedback is welcome!
>
> Cheers,
> Diego

Very nice, Diego!

Re: NEW: XML to JSON Plugin

by Diego A. :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi Alexsandro,

Do you mean....
(1)"convert the generate JSON back to XML"?
OR...
(2)"define a javascript object and convert it to XML"?

If (1):
I initially built this plugin for my personal use (for my
"convenience") so I could easily process XML data. Because of that, I
didn't bother to differentiate between attributes / nodes. ie.:
<xml><person><name>Diego</name></person></xml>
...gives the same output as this...
<xml><person name="Diego"></person></xml>
...so it would be impossible to "reverse the conversion".

If (2):
This is quite easy. And actually, it would be pretty similar to the
code I wrote to show the JSON structure in HTML (Under Examples >
Basic/Extended Structure)

I will write this when I get a chance, but I'd rather wait for the
feedback on this plugin to work out the best way to do it...

Cheers,
Diego

Alexsandro_xpt wrote:

> Very good!!!
>
> Are possible to do reverse?
>
>
>
> --
> Alexsandro
> www.alexsandro.com.br
>
> On 4 jul, 12:34, Diego <diego.a...@...> wrote:
> > I wrote this a few months but didn't have the time to share it. Now
> > that I've re-done the documentation for 2 of my plugins I thought I'd
> > give it a few hours, knock some examples together and share it with
> > the whole world (ok, maybe just a few people).
> >
> > Basic example:
> > var xml = '<xml><message>Hello world</message></xml>';
> > var json = $.xml2json(xml);
> > alert(json.message); // shows "Hello world"
> >
> > Ajax example:
> > var file = 'data/hello.xml'; //<xml><message>Hello world</message></
> > xml>
> > $.get(file, function(xml){
> > �var json = $.xml2json(xml);
> > �alert(json.message);
> >
> > });
> >
> > See the documentation page for more examples and demos.
> > XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
> >
> > As always, feedback is welcome!
> >
> > Cheers,
> > Diego

Re: NEW: XML to JSON Plugin

by Diego A. :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi Mike,

I actually wrote this to use with your form plugin (to process xml
responses of a CMS).
Really appreciate your feedback...

Cheers,
Diego

Mike Alsup wrote:
> > See the documentation page for more examples and demos.
> > XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
> >
> > As always, feedback is welcome!
> >
> > Cheers,
> > Diego
>
> Very nice, Diego!

Re: NEW: XML to JSON Plugin

by Alexsandro_xpt :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi Diego,

I mean ( 1 )

I Know, but would be something like that <xml><person><name>Diego</
name></person></xml> already great. :)


Nice plugin.!!



On 5 jul, 00:06, Diego <diego.a...@...> wrote:

> Hi Alexsandro,
>
> Do you mean....
> (1)"convert the generate JSON back to XML"?
> OR...
> (2)"define a javascript object and convert it to XML"?
>
> If (1):
> I initially built this plugin for my personal use (for my
> "convenience") so I could easily process XML data. Because of that, I
> didn't bother to differentiate between attributes / nodes. ie.:
> <xml><person><name>Diego</name></person></xml>
> ...gives the same output as this...
> <xml><person name="Diego"></person></xml>
> ...so it would be impossible to "reverse the conversion".
>
> If (2):
> This is quite easy. And actually, it would be pretty similar to the
> code I wrote to show the JSON structure in HTML (Under Examples >
> Basic/Extended Structure)
>
> I will write this when I get a chance, but I'd rather wait for the
> feedback on this plugin to work out the best way to do it...
>
> Cheers,
> Diego
>
> Alexsandro_xpt wrote:
> > Very good!!!
>
> > Are possible to do reverse?
>
> > --
> > Alexsandro
> >www.alexsandro.com.br
>
> > On 4 jul, 12:34, Diego <diego.a...@...> wrote:
> > > I wrote this a few months but didn't have the time to share it. Now
> > > that I've re-done the documentation for 2 of my plugins I thought I'd
> > > give it a few hours, knock some examples together and share it with
> > > the whole world (ok, maybe just a few people).
>
> > > Basic example:
> > > var xml = '<xml><message>Hello world</message></xml>';
> > > var json = $.xml2json(xml);
> > > alert(json.message); // shows "Hello world"
>
> > > Ajax example:
> > > var file = 'data/hello.xml'; //<xml><message>Hello world</message></
> > > xml>
> > > $.get(file, function(xml){
> > > �var json = $.xml2json(xml);
> > > �alert(json.message);
>
> > > });
>
> > > See the documentation page for more examples and demos.
> > > XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
>
> > > As always, feedback is welcome!
>
> > > Cheers,
> > > Diego

Re: NEW: XML to JSON Plugin

by chris thatcher-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Have you looked at xotree.js ?  Nice work.

On Mon, Jul 7, 2008 at 10:30 AM, Alexsandro_xpt <bagulhus@...> wrote:

Hi Diego,

I mean ( 1 )

I Know, but would be something like that <xml><person><name>Diego</
name></person></xml> already great. :)


Nice plugin.!!



On 5 jul, 00:06, Diego <diego.a...@...> wrote:
> Hi Alexsandro,
>
> Do you mean....
> (1)"convert the generate JSON back to XML"?
> OR...
> (2)"define a javascript object and convert it to XML"?
>
> If (1):
> I initially built this plugin for my personal use (for my
> "convenience") so I could easily process XML data. Because of that, I
> didn't bother to differentiate between attributes / nodes. ie.:
> <xml><person><name>Diego</name></person></xml>
> ...gives the same output as this...
> <xml><person name="Diego"></person></xml>
> ...so it would be impossible to "reverse the conversion".
>
> If (2):
> This is quite easy. And actually, it would be pretty similar to the
> code I wrote to show the JSON structure in HTML (Under Examples >
> Basic/Extended Structure)
>
> I will write this when I get a chance, but I'd rather wait for the
> feedback on this plugin to work out the best way to do it...
>
> Cheers,
> Diego
>
> Alexsandro_xpt wrote:
> > Very good!!!
>
> > Are possible to do reverse?
>
> > --
> > Alexsandro
> >www.alexsandro.com.br
>
> > On 4 jul, 12:34, Diego <diego.a...@...> wrote:
> > > I wrote this a few months but didn't have the time to share it. Now
> > > that I've re-done the documentation for 2 of my plugins I thought I'd
> > > give it a few hours, knock some examples together and share it with
> > > the whole world (ok, maybe just a few people).
>
> > > Basic example:
> > > var xml = '<xml><message>Hello world</message></xml>';
> > > var json = $.xml2json(xml);
> > > alert(json.message); // shows "Hello world"
>
> > > Ajax example:
> > > var file = 'data/hello.xml'; //<xml><message>Hello world</message></
> > > xml>
> > > $.get(file, function(xml){
> > > �var json = $.xml2json(xml);
> > > �alert(json.message);
>
> > > });
>
> > > See the documentation page for more examples and demos.
> > > XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
>
> > > As always, feedback is welcome!
>
> > > Cheers,
> > > Diego



--
Christopher Thatcher

Re: NEW: XML to JSON Plugin

by Diego A. :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi Alexsandro,

Yeah, that could work. Watch this thread. I will post back here when
I've done it...

Cheers,
Diego A.

On Jul 7, 3:30 pm, Alexsandro_xpt <bagul...@...> wrote:

> Hi Diego,
>
> I mean ( 1 )
>
> I Know, but would be something like that <xml><person><name>Diego</
> name></person></xml> already great. :)
>
> Nice plugin.!!
>
> On 5 jul, 00:06, Diego <diego.a...@...> wrote:
>
> > Hi Alexsandro,
>
> > Do you mean....
> > (1)"convert the generate JSON back to XML"?
> > OR...
> > (2)"define a javascript object and convert it to XML"?
>
> > If (1):
> > I initially built this plugin for my personal use (for my
> > "convenience") so I could easily process XML data. Because of that, I
> > didn't bother to differentiate between attributes / nodes. ie.:
> > <xml><person><name>Diego</name></person></xml>
> > ...gives the same output as this...
> > <xml><person name="Diego"></person></xml>
> > ...so it would be impossible to "reverse the conversion".
>
> > If (2):
> > This is quite easy. And actually, it would be pretty similar to the
> > code I wrote to show the JSON structure in HTML (Under Examples >
> > Basic/Extended Structure)
>
> > I will write this when I get a chance, but I'd rather wait for the
> > feedback on this plugin to work out the best way to do it...
>
> > Cheers,
> > Diego
>
> > Alexsandro_xpt wrote:
> > > Very good!!!
>
> > > Are possible to do reverse?
>
> > > --
> > > Alexsandro
> > >www.alexsandro.com.br
>
> > > On 4 jul, 12:34, Diego <diego.a...@...> wrote:
> > > > I wrote this a few months but didn't have the time to share it. Now
> > > > that I've re-done the documentation for 2 of my plugins I thought I'd
> > > > give it a few hours, knock some examples together and share it with
> > > > the whole world (ok, maybe just a few people).
>
> > > > Basic example:
> > > > var xml = '<xml><message>Hello world</message></xml>';
> > > > var json = $.xml2json(xml);
> > > > alert(json.message); // shows "Hello world"
>
> > > > Ajax example:
> > > > var file = 'data/hello.xml'; //<xml><message>Hello world</message></
> > > > xml>
> > > > $.get(file, function(xml){
> > > > �var json = $.xml2json(xml);
> > > > �alert(json.message);
>
> > > > });
>
> > > > See the documentation page for more examples and demos.
> > > > XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
>
> > > > As always, feedback is welcome!
>
> > > > Cheers,
> > > > Diego

Re: NEW: XML to JSON Plugin

by Diego A. :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi Chris,

I hadn't seen xotree before, but I found it...
http://www.kawa.net/works/js/xml/objtree-e.html
...and looking at the examples, it seems to behave exactly like my
plugin but it's more flexible with options and built-in ajax support.

It's definitelly a good base for future development of my plugin...

Cheers,
Diego A.

On Jul 7, 8:10 pm, "chris thatcher" <thatcher.christop...@...>
wrote:

> Have you looked at xotree.js ?  Nice work.
>
>
>
> On Mon, Jul 7, 2008 at 10:30 AM, Alexsandro_xpt <bagul...@...> wrote:
>
> > Hi Diego,
>
> > I mean ( 1 )
>
> > I Know, but would be something like that <xml><person><name>Diego</
> > name></person></xml> already great. :)
>
> > Nice plugin.!!
>
> > On 5 jul, 00:06, Diego <diego.a...@...> wrote:
> > > Hi Alexsandro,
>
> > > Do you mean....
> > > (1)"convert the generate JSON back to XML"?
> > > OR...
> > > (2)"define a javascript object and convert it to XML"?
>
> > > If (1):
> > > I initially built this plugin for my personal use (for my
> > > "convenience") so I could easily process XML data. Because of that, I
> > > didn't bother to differentiate between attributes / nodes. ie.:
> > > <xml><person><name>Diego</name></person></xml>
> > > ...gives the same output as this...
> > > <xml><person name="Diego"></person></xml>
> > > ...so it would be impossible to "reverse the conversion".
>
> > > If (2):
> > > This is quite easy. And actually, it would be pretty similar to the
> > > code I wrote to show the JSON structure in HTML (Under Examples >
> > > Basic/Extended Structure)
>
> > > I will write this when I get a chance, but I'd rather wait for the
> > > feedback on this plugin to work out the best way to do it...
>
> > > Cheers,
> > > Diego
>
> > > Alexsandro_xpt wrote:
> > > > Very good!!!
>
> > > > Are possible to do reverse?
>
> > > > --
> > > > Alexsandro
> > > >www.alexsandro.com.br
>
> > > > On 4 jul, 12:34, Diego <diego.a...@...> wrote:
> > > > > I wrote this a few months but didn't have the time to share it. Now
> > > > > that I've re-done the documentation for 2 of my plugins I thought I'd
> > > > > give it a few hours, knock some examples together and share it with
> > > > > the whole world (ok, maybe just a few people).
>
> > > > > Basic example:
> > > > > var xml = '<xml><message>Hello world</message></xml>';
> > > > > var json = $.xml2json(xml);
> > > > > alert(json.message); // shows "Hello world"
>
> > > > > Ajax example:
> > > > > var file = 'data/hello.xml'; //<xml><message>Hello world</message></
> > > > > xml>
> > > > > $.get(file, function(xml){
> > > > > �var json = $.xml2json(xml);
> > > > > �alert(json.message);
>
> > > > > });
>
> > > > > See the documentation page for more examples and demos.
> > > > > XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
>
> > > > > As always, feedback is welcome!
>
> > > > > Cheers,
> > > > > Diego
>
> --
> Christopher Thatcher

Re: NEW: XML to JSON Plugin

by chris thatcher-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

yeah it would be great to see it ported to a jQuery plugin in combination with your work and then you could actually use jQuery ajax and it would be cleaner.  I've used it a lot and for me the big thing is the ability to easy set what elements are treated as array's even if only one is present (because it keeps the code using it simpler, less cases), and specifying the attribute prefix (I use '@') because I can basically use e4x like syntax.

I also made a modification to xotree locally to allow a flat serialization/deserialization so that the item becomes a list of name/value objects, the name being the 'javascript path' eg 'foo.bar[0].@goop' and the value is the simple value.  This was extremely useful for fast development with GoogleGears because I could have a generic table for all objects and use the powerful 'name LIKE' queries to find objects stored in the db.

I'd love to help you develop this or give feedback because it would also help promote some mvc stuff I'm build for the jQ community.

Thatcher

On Mon, Jul 7, 2008 at 6:59 PM, Diego <diego.alto@...> wrote:

Hi Chris,

I hadn't seen xotree before, but I found it...
http://www.kawa.net/works/js/xml/objtree-e.html
...and looking at the examples, it seems to behave exactly like my
plugin but it's more flexible with options and built-in ajax support.

It's definitelly a good base for future development of my plugin...

Cheers,
Diego A.

On Jul 7, 8:10 pm, "chris thatcher" <thatcher.christop...@...>
wrote:
> Have you looked at xotree.js ?  Nice work.
>
>
>
> On Mon, Jul 7, 2008 at 10:30 AM, Alexsandro_xpt <bagul...@...> wrote:
>
> > Hi Diego,
>
> > I mean ( 1 )
>
> > I Know, but would be something like that <xml><person><name>Diego</
> > name></person></xml> already great. :)
>
> > Nice plugin.!!
>
> > On 5 jul, 00:06, Diego <diego.a...@...> wrote:
> > > Hi Alexsandro,
>
> > > Do you mean....
> > > (1)"convert the generate JSON back to XML"?
> > > OR...
> > > (2)"define a javascript object and convert it to XML"?
>
> > > If (1):
> > > I initially built this plugin for my personal use (for my
> > > "convenience") so I could easily process XML data. Because of that, I
> > > didn't bother to differentiate between attributes / nodes. ie.:
> > > <xml><person><name>Diego</name></person></xml>
> > > ...gives the same output as this...
> > > <xml><person name="Diego"></person></xml>
> > > ...so it would be impossible to "reverse the conversion".
>
> > > If (2):
> > > This is quite easy. And actually, it would be pretty similar to the
> > > code I wrote to show the JSON structure in HTML (Under Examples >
> > > Basic/Extended Structure)
>
> > > I will write this when I get a chance, but I'd rather wait for the
> > > feedback on this plugin to work out the best way to do it...
>
> > > Cheers,
> > > Diego
>
> > > Alexsandro_xpt wrote:
> > > > Very good!!!
>
> > > > Are possible to do reverse?
>
> > > > --
> > > > Alexsandro
> > > >www.alexsandro.com.br
>
> > > > On 4 jul, 12:34, Diego <diego.a...@...> wrote:
> > > > > I wrote this a few months but didn't have the time to share it. Now
> > > > > that I've re-done the documentation for 2 of my plugins I thought I'd
> > > > > give it a few hours, knock some examples together and share it with
> > > > > the whole world (ok, maybe just a few people).
>
> > > > > Basic example:
> > > > > var xml = '<xml><message>Hello world</message></xml>';
> > > > > var json = $.xml2json(xml);
> > > > > alert(json.message); // shows "Hello world"
>
> > > > > Ajax example:
> > > > > var file = 'data/hello.xml'; //<xml><message>Hello world</message></
> > > > > xml>
> > > > > $.get(file, function(xml){
> > > > > �var json = $.xml2json(xml);
> > > > > �alert(json.message);
>
> > > > > });
>
> > > > > See the documentation page for more examples and demos.
> > > > > XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
>
> > > > > As always, feedback is welcome!
>
> > > > > Cheers,
> > > > > Diego
>
> --
> Christopher Thatcher



--
Christopher Thatcher

Re: NEW: XML to JSON Plugin

by Diego A. :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi Chris,

I'd be glad to work on this with you. Unfortunately, I'm completely
tied up with a couple of other projects for the next few days. I won't
have a chance to work on the next version, but I'll let I know as soon
as I make some changes.

AJAX:
Although I released this as a jQuery plugin, it doesn't actually make
any use of jQuery functionality, other than the $.each function. But
as you suggested, it does make sense to integrate it with jQuery a bit
further and to include ajax.

FORMAT:
As far as formatting is concerned, I understand that you'd like the
output to follow a certain format, but is this really something that
is worth working on? Isn't what I've got at the moment enough, ie.:
use arrays only when necessary OR always use arrays. Is there really a
need to specify which nodes should be arrays and which shouldn't?

Serialization/De-serialization:
I like the idea (like the firefox about:config page), but what affect
would this have on memory? ie.: by doing this, wouldn't we essentially
double memory usage by storing every value in data['a.b.c'] as well as
data.a.b.c?

Again, thank you for your interest in this project. I look forward to
your reply...

Cheers,
Diego A.

On Jul 8, 12:11 am, "chris thatcher" <thatcher.christop...@...>
wrote:

> yeah it would be great to see it ported to a jQuery plugin in combination
> with your work and then you could actually use jQuery ajax and it would be
> cleaner.  I've used it a lot and for me the big thing is the ability to easy
> set what elements are treated as array's even if only one is present
> (because it keeps the code using it simpler, less cases), and specifying the
> attribute prefix (I use '@') because I can basically use e4x like syntax.
>
> I also made a modification to xotree locally to allow a flat
> serialization/deserialization so that the item becomes a list of name/value
> objects, the name being the 'javascript path' eg 'foo.bar[0].@goop' and the
> value is the simple value.  This was extremely useful for fast development
> with GoogleGears because I could have a generic table for all objects and
> use the powerful 'name LIKE' queries to find objects stored in the db.
>
> I'd love to help you develop this or give feedback because it would also
> help promote some mvc stuff I'm build for the jQ community.
>
> Thatcher
>
>
>
> On Mon, Jul 7, 2008 at 6:59 PM, Diego <diego.a...@...> wrote:
>
> > Hi Chris,
>
> > I hadn't seen xotree before, but I found it...
> >http://www.kawa.net/works/js/xml/objtree-e.html
> > ...and looking at the examples, it seems to behave exactly like my
> > plugin but it's more flexible with options and built-in ajax support.
>
> > It's definitelly a good base for future development of my plugin...
>
> > Cheers,
> > Diego A.
>
> > On Jul 7, 8:10 pm, "chris thatcher" <thatcher.christop...@...>
> > wrote:
> > > Have you looked at xotree.js ?  Nice work.
>
> > > On Mon, Jul 7, 2008 at 10:30 AM, Alexsandro_xpt <bagul...@...>
> > wrote:
>
> > > > Hi Diego,
>
> > > > I mean ( 1 )
>
> > > > I Know, but would be something like that <xml><person><name>Diego</
> > > > name></person></xml> already great. :)
>
> > > > Nice plugin.!!
>
> > > > On 5 jul, 00:06, Diego <diego.a...@...> wrote:
> > > > > Hi Alexsandro,
>
> > > > > Do you mean....
> > > > > (1)"convert the generate JSON back to XML"?
> > > > > OR...
> > > > > (2)"define a javascript object and convert it to XML"?
>
> > > > > If (1):
> > > > > I initially built this plugin for my personal use (for my
> > > > > "convenience") so I could easily process XML data. Because of that, I
> > > > > didn't bother to differentiate between attributes / nodes. ie.:
> > > > > <xml><person><name>Diego</name></person></xml>
> > > > > ...gives the same output as this...
> > > > > <xml><person name="Diego"></person></xml>
> > > > > ...so it would be impossible to "reverse the conversion".
>
> > > > > If (2):
> > > > > This is quite easy. And actually, it would be pretty similar to the
> > > > > code I wrote to show the JSON structure in HTML (Under Examples >
> > > > > Basic/Extended Structure)
>
> > > > > I will write this when I get a chance, but I'd rather wait for the
> > > > > feedback on this plugin to work out the best way to do it...
>
> > > > > Cheers,
> > > > > Diego
>
> > > > > Alexsandro_xpt wrote:
> > > > > > Very good!!!
>
> > > > > > Are possible to do reverse?
>
> > > > > > --
> > > > > > Alexsandro
> > > > > >www.alexsandro.com.br
>
> > > > > > On 4 jul, 12:34, Diego <diego.a...@...> wrote:
> > > > > > > I wrote this a few months but didn't have the time to share it.
> > Now
> > > > > > > that I've re-done the documentation for 2 of my plugins I thought
> > I'd
> > > > > > > give it a few hours, knock some examples together and share it
> > with
> > > > > > > the whole world (ok, maybe just a few people).
>
> > > > > > > Basic example:
> > > > > > > var xml = '<xml><message>Hello world</message></xml>';
> > > > > > > var json = $.xml2json(xml);
> > > > > > > alert(json.message); // shows "Hello world"
>
> > > > > > > Ajax example:
> > > > > > > var file = 'data/hello.xml'; //<xml><message>Hello
> > world</message></
> > > > > > > xml>
> > > > > > > $.get(file, function(xml){
> > > > > > > �var json = $.xml2json(xml);
> > > > > > > �alert(json.message);
>
> > > > > > > });
>
> > > > > > > See the documentation page for more examples and demos.
> > > > > > > XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
>
> > > > > > > As always, feedback is welcome!
>
> > > > > > > Cheers,
> > > > > > > Diego
>
> > > --
> > > Christopher Thatcher
>
> --
> Christopher Thatcher

Re: NEW: XML to JSON Plugin

by chris thatcher-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message



On Tue, Jul 15, 2008 at 10:18 AM, Diego <diego.alto@...> wrote:

Hi Chris,

I'd be glad to work on this with you. Unfortunately, I'm completely
tied up with a couple of other projects for the next few days. I won't
have a chance to work on the next version, but I'll let I know as soon
as I make some changes.
Same boat here so we can organize a little then push forward.
 


AJAX:
Although I released this as a jQuery plugin, it doesn't actually make
any use of jQuery functionality, other than the $.each function. But
as you suggested, it does make sense to integrate it with jQuery a bit
further and to include ajax.
Yeah actually I think it's normally sufficient to let the user use jquery ajax as usual but just provide easy functions to unmarshal/marshal into the format they need where ever they need it.  It reduces the size of the plugin and I've sort of found most ajax-convenience functions in plugins aren't exactly what I need so I end up not using them anyway.  Not always true though and if you think there some benefit I really don't feel very strongly either way (just playing devils advocate.)


FORMAT:
As far as formatting is concerned, I understand that you'd like the
output to follow a certain format, but is this really something that
is worth working on? Isn't what I've got at the moment enough, ie.:
use arrays only when necessary OR always use arrays. Is there really a
need to specify which nodes should be arrays and which shouldn't?
Where it really became an issue in a production environment was that I always had to test every 'element' to see if i needed to treat it as an array or object.  And every time I started to rely on it being an {} or [], there was some corner case that came up gave me the other and the code broke.  This is especially true in templates.


Serialization/De-serialization:
I like the idea (like the firefox about:config page), but what affect
would this have on memory? ie.: by doing this, wouldn't we essentially
double memory usage by storing every value in data['a.b.c'] as well as
data.a.b.c?
They are actually different objects so you'ld have myJsonObject.a.b.c and myRejosnObject['a.b.c'].  Normally how I use it is I only use json form in code, but marshal to/from the rejson  when serializing to/from sqlite, and marshal to/from the xml form when serializing to/from the server. But this was just my use case.  In general the idea is that only one form is present in memory at a time, but it's easy to move between them when I need to.  So if I wanted to provide a nice table to edit an object, I could retreive that object as rejson from the db and I'd just leave it in the same form or if it came as xml from the server I'd marshal directly to rejson, skip json, and delete the xml footprint.  In the end I think the marshalling performance is what we focus on and let the user decide when they need delete objects.

Just some thoughts.  I'll try to clean up some older example code.  I also think it might be worth thinking about how Ariels jquery.collections and something like jspath could be used to provide some more jquery-like, e4x-ish approach so we could have

var data = jqE4X(xml);//basically marshals to json
jqE4X('a..c', data).each(function(){
  //etc gives us an array of all decendants 'c' of data.a
});

Or is this not at all what you have in mind?

Thatcher


Again, thank you for your interest in this project. I look forward to
your reply...

Cheers,
Diego A.

On Jul 8, 12:11 am, "chris thatcher" <thatcher.christop...@...>
wrote:
> yeah it would be great to see it ported to a jQuery plugin in combination
> with your work and then you could actually use jQuery ajax and it would be
> cleaner.  I've used it a lot and for me the big thing is the ability to easy
> set what elements are treated as array's even if only one is present
> (because it keeps the code using it simpler, less cases), and specifying the
> attribute prefix (I use '@') because I can basically use e4x like syntax.
>
> I also made a modification to xotree locally to allow a flat
> serialization/deserialization so that the item becomes a list of name/value
> objects, the name being the 'javascript path' eg 'foo.bar[0].@goop' and the
> value is the simple value.  This was extremely useful for fast development
> with GoogleGears because I could have a generic table for all objects and
> use the powerful 'name LIKE' queries to find objects stored in the db.
>
> I'd love to help you develop this or give feedback because it would also
> help promote some mvc stuff I'm build for the jQ community.
>
> Thatcher
>
>
>
> On Mon, Jul 7, 2008 at 6:59 PM, Diego <diego.a...@...> wrote:
>
> > Hi Chris,
>
> > I hadn't seen xotree before, but I found it...
> >http://www.kawa.net/works/js/xml/objtree-e.html
> > ...and looking at the examples, it seems to behave exactly like my
> > plugin but it's more flexible with options and built-in ajax support.
>
> > It's definitelly a good base for future development of my plugin...
>
> > Cheers,
> > Diego A.
>
> > On Jul 7, 8:10 pm, "chris thatcher" <thatcher.christop...@...>
> > wrote:
> > > Have you looked at xotree.js ?  Nice work.
>
> > > On Mon, Jul 7, 2008 at 10:30 AM, Alexsandro_xpt <bagul...@...>
> > wrote:
>
> > > > Hi Diego,
>
> > > > I mean ( 1 )
>
> > > > I Know, but would be something like that <xml><person><name>Diego</
> > > > name></person></xml> already great. :)
>
> > > > Nice plugin.!!
>
> > > > On 5 jul, 00:06, Diego <diego.a...@...> wrote:
> > > > > Hi Alexsandro,
>
> > > > > Do you mean....
> > > > > (1)"convert the generate JSON back to XML"?
> > > > > OR...
> > > > > (2)"define a javascript object and convert it to XML"?
>
> > > > > If (1):
> > > > > I initially built this plugin for my personal use (for my
> > > > > "convenience") so I could easily process XML data. Because of that, I
> > > > > didn't bother to differentiate between attributes / nodes. ie.:
> > > > > <xml><person><name>Diego</name></person></xml>
> > > > > ...gives the same output as this...
> > > > > <xml><person name="Diego"></person></xml>
> > > > > ...so it would be impossible to "reverse the conversion".
>
> > > > > If (2):
> > > > > This is quite easy. And actually, it would be pretty similar to the
> > > > > code I wrote to show the JSON structure in HTML (Under Examples >
> > > > > Basic/Extended Structure)
>
> > > > > I will write this when I get a chance, but I'd rather wait for the
> > > > > feedback on this plugin to work out the best way to do it...
>
> > > > > Cheers,
> > > > > Diego
>
> > > > > Alexsandro_xpt wrote:
> > > > > > Very good!!!
>
> > > > > > Are possible to do reverse?
>
> > > > > > --
> > > > > > Alexsandro
> > > > > >www.alexsandro.com.br
>
> > > > > > On 4 jul, 12:34, Diego <diego.a...@...> wrote:
> > > > > > > I wrote this a few months but didn't have the time to share it.
> > Now
> > > > > > > that I've re-done the documentation for 2 of my plugins I thought
> > I'd
> > > > > > > give it a few hours, knock some examples together and share it
> > with
> > > > > > > the whole world (ok, maybe just a few people).
>
> > > > > > > Basic example:
> > > > > > > var xml = '<xml><message>Hello world</message></xml>';
> > > > > > > var json = $.xml2json(xml);
> > > > > > > alert(json.message); // shows "Hello world"
>
> > > > > > > Ajax example:
> > > > > > > var file = 'data/hello.xml'; //<xml><message>Hello
> > world</message></
> > > > > > > xml>
> > > > > > > $.get(file, function(xml){
> > > > > > > �var json = $.xml2json(xml);
> > > > > > > �alert(json.message);
>
> > > > > > > });
>
> > > > > > > See the documentation page for more examples and demos.
> > > > > > > XML to JSON Plugin -http://fyneworks.com/jquery/xml-to-json/
>
> > > > > > > As always, feedback is welcome!
>
> > > > > > > Cheers,
> > > > > > > Diego
>
> > > --
> > > Christopher Thatcher
>
> --
> Christopher Thatcher



--
Christopher Thatcher

Re: NEW: XML to JSON Plugin

by Diego A. :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Chris,

AJAX:
Yeah actually I think it's normally sufficient to let the user use jquery ajax as usual but just provide easy functions to unmarshal/marshal into the format they need where ever they need it.  It reduces the size of the plugin and I've sort of found most ajax-convenience functions in plugins aren't exactly what I need so I end up not using them anyway.  Not always true though and if you think there some benefit I really don't feel very strongly either way (just playing devils advocate.)
 
We need not re-invent the wheel. I think it would be fair to assume users of this plugin will have a certain amount of experience and would be quite capable (and would probably prefer) to write their own ajax calls, like this...
$.get(url2xml, function(response){
 var json = $.xml2json(response);
 // do stuff
});

Having said that, it would be very easy to assume that an ajax call is required when a function is sent in one of the parameters, for example:
$.xml2json(url2xml, function(json){
 // do stuff
});
... which doesn't really save (or cost) much time (or code) but it provides a simple little hook for Ajax calls. :-D

FORMAT:
Where it really became an issue in a production environment was that I always had to test every 'element' to see if i needed to treat it as an array or object.  And every time I started to rely on it being an {} or [], there was some corner case that came up gave me the other and the code broke.  This is especially true in templates.

OK, my current implementation allows you to choose between 2 formats:
simple - arrays when necessary
extended - always use arrays
...isn't that enough to solve the problem of not knowing what to expect? In your case for example, just use extended mode and you're good to go. I just can't see a scenario where the user of this plubing would insist of choosing specific formatting options for different 'branches'... Am I being un-reasonble?

Serialization/De-serialization:
I see what you're saying and it seems great. I'd have to figure out how to make this work, but I have had an idea which might just do the job. In the documentation, I wrote a script that goes through the json object and represents it in HTML. That same script could be used to create a 'map' of the json structure. This map could be an array OR maybe even better, a simple string with the path ("reference") to every node in the structure. Something like this:

Consider this XML:
<house>
 <kitchen>
  <dishwasher>RED</dishwasher>
  <fridge>WHITE</fridge>
  <telly>24 INCH</telly>
 </kitchen>
 <lounge>
  <sofa>BROWN</sofa>
  <telly>50 INCH</telly>
 </lounge>
</house>

Which would result in the following map...
JSON MAP: [
 "kitchen", "kitchen.dishwasher", "kitchen.fridge", "kitchen.telly",
  "lounge", "lounge.sofa", "lounge.telly"
]

That way we could come up with some xpath-like markup to search through nodes just like you suggested...
json.find('dishwasher') // gives us array with nodes kitchen.dishwasher
json.find('dvd') // gives us an empty array
json.find('telly') // gives us array with nodes kitchen.telly and lounge.telly.

$.each(json.find('telly'), function(i, node){
 // 1st - kitchen.telly node
 // 2nd - lounge.telly node
});

How does that sound???

Cheers,
Diego A.

2008/7/15 chris thatcher <thatcher.christopher@...>:


On Tue, Jul 15, 2008 at 10:18 AM, Diego <diego.alto@...> wrote:

Hi Chris,

I'd be glad to work on this with you. Unfortunately, I'm completely
tied up with a couple of other projects for the next few days. I won't
have a chance to work on the next version, but I'll let I know as soon
as I make some changes.
Same boat here so we can organize a little then push forward.
 


AJAX:
Although I released this as a jQuery plugin, it doesn't actually make
any use of jQuery functionality, other than the $.each function. But
as you suggested, it does make sense to integrate it with jQuery a bit
further and to include ajax.
<