4

我试图将一些数据从我的谷歌应用引擎数据存储输出到 xml,以便 Flash 文件可以读取它,

问题是使用 CDATA 标记时,输出的 xml 包含&lt;而不是 <

例如

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

这是我输出xml的python:

    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="    "))

我知道这是一个编码问题,只是似乎无法解决问题,

提前致谢

4

3 回答 3

8

似乎 createCDATASection 方法对我有用。

for tag in tags:
    tag_element = doc.createCDATASection(tag.thetag)
    tags_element.appendChild(tag_element)
于 2010-05-06T11:46:38.780 回答
0

要执行您正在尝试的操作,您需要使用适当的 minidom 方法实际添加一个 CDATA 块。这本身不是编码问题,但是当您使用 createTextNode 时,它​​会为您将 XML 控制字符编码为实际的文本字符,毫无疑问,这是为了提供帮助。

于 2010-05-06T11:01:08.920 回答
0

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

于 2010-05-06T11:02:07.780 回答