Lib to generate XML/JSON[P] output from a DTD/XSD/JSON Schema/etc

Discussion in 'Python' started by Acácio Centeno, Feb 14, 2013.

  1. Hi, I've searched both this group and the web but was unable to find an answer, sorry if it has already been answered, it seems such a common problem that I’m sure someone has asked before.

    We have a WebServices platform that must reply in XML, JSON, or JSONP. Having to convert between these formats is a really pain in the neck.

    What I’d like to do is, given some schema representation, that could be aDTD, XSD or whatever and a python dictionary with the values for each node, generate the output in either XML, JSON or JSONP.

    For instance, if the XSD would be:
    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Foo"></xs:element>
    <xs:element name="Baz"></xs:element>
    <xs:element name="Choice" minOccurs="0">
    <xs:simpleType>
    <xs:restriction base="xs:string">
    <xs:enumeration value="A" />
    <xs:enumeration value="B" />
    <xs:enumeration value="C" />
    <xs:enumeration value="D" />
    </xs:restriction>
    </xs:simpleType>
    </xs:element>
    </xs:schema>

    And given the following dict:

    {
    “foo”: “bar”,
    “hello”: “world”,
    “choice”: “B”,
    “callback”: “process_server_reply”
    }

    Be able to generate either this XML:

    <xml>
    <Foo>Bar</Foo>
    <Hello>World</Hello>
    <Choice>B</Choice>
    </xml>

    Or this JSON:

    {
    "foo": "bar",
    "hello": "world",
    "choice": "B"
    }

    Or this JSONP:

    process_server_reply({"foo": "bar","hello": "world","choice": "B"});


    Which library/technique would you guys recommend for this kind of scenario?

    Thanks in advance.
    Acácio Centeno, Feb 14, 2013
    #1
    1. Advertising

  2. Acácio Centeno

    dieter Guest

    Acácio Centeno <> writes:

    > Hi, I've searched both this group and the web but was unable to find an answer, sorry if it has already been answered, it seems such a common problem that I am sure someone has asked before.
    >
    > We have a WebServices platform that must reply in XML, JSON, or JSONP. Having to convert between these formats is a really pain in the neck.
    >
    > What I would like to do is, given some schema representation, that could be a DTD, XSD or whatever and a python dictionary with the values for each node, generate the output in either XML, JSON or JSONP.


    You could have a look at the PyPI packages "dm.zope.rpc"
    and "dm.zope.rpc.wsdl_suds". They provide a middleware
    to support protocol independent web services (for the
    "Zope" application server). Together, they support
    XML-RPC, JSON-RPC and WSDL decribed SOAP web services.
    As you are likely not using Zope, you probably cannot use
    these packages directly but you may get some ideas how
    to create such a middleware for your web framework.

    Python (from 2.6 on) has "json" support. Thus converting
    a dict to "json" is simple ("json.dumps").

    "dm.zope.rpc.wsdl_suds" abuses "suds" to parse the WSDL
    and generate appropriate SOAP responses from a dict.
    Alternatively, you might use "PyXB" for that.

    You could also have a look at "Spyne" (formerly known (among others)
    as "rpclib"). I think (but am not sure) that it targets
    your use case for the "twisted" environment.
    dieter, Feb 15, 2013
    #2
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Matt
    Replies:
    3
    Views:
    37,225
    MKNDK
    Sep 11, 2008
  2. stiank81
    Replies:
    4
    Views:
    15,379
    stiank81
    Jun 26, 2005
  3. Stan R.
    Replies:
    4
    Views:
    17,341
    Stan R.
    Jun 8, 2006
  4. pramodr
    Replies:
    3
    Views:
    839
    Peter Flynn
    Apr 5, 2009
  5. Replies:
    5
    Views:
    999
    Brian McCauley
    Nov 29, 2006
Loading...

Share This Page