Search code examples
pythonxmlgoogle-app-engineminidom

stop minidom converting < > to &lt; &gt;


Im trying to output some data from my google app engine datastore to xml so that a flash file can read it,

The problem is when using CDATA tags the outputted xml contains &lt; instead of <

e.g

<name>&lt;![CDATA][name]]&gt;</name>

here is my python which outputs the xml:

    doc = Document()

    feed = doc.createElement("feed")
    doc.appendChild(feed)
    tags_element = doc.createElement("names")
    feed.appendChild(tags_element)
    copen = "<![CDATA]["
    cclose = "]]>"

    tags = db.GqlQuery("SELECT * FROM Tag ORDER BY date DESC")

    for tag in tags:
        tag_element = doc.createElement("name")
        tags_element.appendChild(tag_element)
        the_tag = doc.createTextNode("%s%s%s" % (copen,str(tag.thetag), cclose))
        tag_element.appendChild(the_tag)

    self.response.headers["Content-Type"] = "application/xml"
    self.response.out.write(doc.toprettyxml(indent="    "))

i know this is an encoding issue just can't seem to get to the route of the problem,

thanks in advance


Solution

  • It seems the createCDATASection method works for me.

    for tag in tags:
        tag_element = doc.createCDATASection(tag.thetag)
        tags_element.appendChild(tag_element)