停止minidom转换< >到< >

时间:2010-05-06 10:58:50

标签: python xml google-app-engine minidom

我试图将我的Google应用引擎数据存储区中的一些数据输出到xml,以便flash文件可以读取它,

问题是当使用CDATA标签时,输出的xml包含<而不是<

例如

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

这是我的python输出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="    "))

我知道这是一个编码问题,似乎无法找到问题的路径,

提前致谢

3 个答案:

答案 0 :(得分:8)

似乎createCDATASection方法适用于我。

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

答案 1 :(得分:0)

要执行您尝试的操作,您需要使用适当的minidom方法实际添加CDATA块。这本身并不是编码问题,但是当你使用createTextNode时,它会为你编写XML控制字符到实际的文本字符,以便有用,毫无疑问。

答案 2 :(得分:0)

createTextNode将保留的字符(< > &)转换为实体。