ISO dict => xml converter

K

kj

Hi. Does anyone know of a module that will take a suitable Python
dictionary and return the corresponding XML structure?

In Perl I use XML::Simple's handy XMLout function:

use XML::Simple 'XMLout';
my %h = ( 'Foo' => +{
'Bar' => +{
'Baz' => [ { 'meenie' => 3 },
{ 'meenie' => 7 } ],
'eenie' => 4,
},
'minie' => 1,
'moe' => 2,
} );

print XMLout( \%h, KeepRoot => 1, KeyAttr => undef );
__END__
<Foo minie="1" moe="2">
<Bar eenie="4">
<Baz meenie="3" />
<Baz meenie="7" />
</Bar>
</Foo>

Is there a Python module that can do a similar conversion from
a Python dict to an XML string?

(FWIW, I'm familiar with xml.marshal.generic.dumps, but it does
not produce an output anywhere similar to the one illustrated
above.)

TIA!

Kynn
 
S

Stefan Behnel

kj said:
Hi. Does anyone know of a module that will take a suitable Python
dictionary and return the corresponding XML structure?

In Perl I use XML::Simple's handy XMLout function:

use XML::Simple 'XMLout';
my %h = ( 'Foo' => +{
'Bar' => +{
'Baz' => [ { 'meenie' => 3 },
{ 'meenie' => 7 } ],
'eenie' => 4,
},
'minie' => 1,
'moe' => 2,
} );

print XMLout( \%h, KeepRoot => 1, KeyAttr => undef );
__END__
<Foo minie="1" moe="2">
<Bar eenie="4">
<Baz meenie="3" />
<Baz meenie="7" />
</Bar>
</Foo>

Is there a Python module that can do a similar conversion from
a Python dict to an XML string?

This is so trivial to do in ElementTree that I wouldn't expect there to be a
special package for this. If you write the estimated 15 lines of code
yourself, you can even tweak it into exactly the structure you want.

Stefan
 
P

Paddy

Hi.  Does anyone know of a module that will take a suitable Python
dictionary and return the corresponding XML structure?

In Perl I use XML::Simple's handy XMLout function:

  use XML::Simple 'XMLout';
  my %h = ( 'Foo' => +{
                        'Bar' => +{
                                    'Baz' => [ { 'meenie' => 3 },
                                               { 'meenie' => 7 } ],
                                    'eenie' => 4,
                                  },
                        'minie' => 1,
                        'moe' => 2,
                      } );

  print XMLout( \%h, KeepRoot => 1, KeyAttr => undef );
  __END__
<Foo minie="1" moe="2">
  <Bar eenie="4">
    <Baz meenie="3" />
    <Baz meenie="7" />
  </Bar>
</Foo>

Is there a Python module that can do a similar conversion from
a Python dict to an XML string?

(FWIW, I'm familiar with xml.marshal.generic.dumps, but it does
not produce an output anywhere similar to the one illustrated
above.)

TIA!

Kynn

Try:
http://pyxml.sourceforge.net/topics/howto/node26.html

- Paddy.
 
W

Waldemar Osuch

Hi.  Does anyone know of a module that will take a suitable Python
dictionary and return the corresponding XML structure?

In Perl I use XML::Simple's handy XMLout function:

  use XML::Simple 'XMLout';
  my %h = ( 'Foo' => +{
                        'Bar' => +{
                                    'Baz' => [ { 'meenie' => 3 },
                                               { 'meenie' => 7 } ],
                                    'eenie' => 4,
                                  },
                        'minie' => 1,
                        'moe' => 2,
                      } );

  print XMLout( \%h, KeepRoot => 1, KeyAttr => undef );
  __END__
<Foo minie="1" moe="2">
  <Bar eenie="4">
    <Baz meenie="3" />
    <Baz meenie="7" />
  </Bar>
</Foo>

Is there a Python module that can do a similar conversion from
a Python dict to an XML string?

(FWIW, I'm familiar with xml.marshal.generic.dumps, but it does
not produce an output anywhere similar to the one illustrated
above.)
What about

-----------------------------------------
import lxml.etree as ET
from lxml.builder import E

h = E.Foo(
dict(minie='1', moe='2'),
E.Bar(
dict(eenie='4'),
E.Baz(meenie='3'),
E.Baz(meenie='7')))

print ET.tostring(h, pretty_print=True)

----------------------------------------
<Foo moe="2" minie="1">
<Bar eenie="4">
<Baz meenie="3"/>
<Baz meenie="7"/>
</Bar>
</Foo>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,682
Members
48,796
Latest member
Greg L.

Latest Threads

Top