ISO dict => xml converter

Waldemar Osuch waldemar.osuch at gmail.com
Fri Jun 20 20:56:22 EDT 2008


On Jun 20, 6:37 am, kj <so... at 987jk.com.invalid> wrote:
> 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>
---------------------------------------

Waldemar




More information about the Python-list mailing list