gpt4 book ai didi

xml - 在 App Engine 上使用 Python SAX 解析 unicode XML

转载 作者:数据小太阳 更新时间:2023-10-29 02:32:43 31 4
gpt4 key购买 nike

我使用 xml.sax 和 XML 的 unicode 字符串作为输入,最初是从 Web 表单输入的。在我的本地机器上(python 2.5,使用默认的 xmlreader expat,通过应用引擎运行),它工作正常。但是,生产应用引擎服务器上完全相同的代码和输入字符串会因“格式不正确”而失败。例如,它发生在下面的代码中:

from xml import sax
class MyHandler(sax.ContentHandler):
pass

handler = MyHandler()
# Both of these unicode strings return 'not well-formed'
# on app engine, but work locally
xml.parseString(u"<a>b</a>",handler)
xml.parseString(u"<!DOCTYPE a[<!ELEMENT a (#PCDATA)> ]><a>b</a>",handler)

# Both of these work, but output unicode
xml.parseString("<a>b</a>",handler)
xml.parseString("<!DOCTYPE a[<!ELEMENT a (#PCDATA)> ]><a>b</a>",handler)

导致错误:

  File "<string>", line 1, in <module>
File "/base/python_dist/lib/python2.5/xml/sax/__init__.py", line 49, in parseString
parser.parse(inpsrc)
File "/base/python_dist/lib/python2.5/xml/sax/expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/base/python_dist/lib/python2.5/xml/sax/xmlreader.py", line 123, in parse
self.feed(buffer)
File "/base/python_dist/lib/python2.5/xml/sax/expatreader.py", line 211, in feed
self._err_handler.fatalError(exc)
File "/base/python_dist/lib/python2.5/xml/sax/handler.py", line 38, in fatalError
raise exception
SAXParseException: <unknown>:1:1: not well-formed (invalid token)

同样使用 python2.5 和 expat 的 App Engine 的解析器在输入 unicode 时会失败的原因是什么?

最佳答案

你不应该解析一个 unicode 字符串,你应该解析一个 UTF-8 编码的字符串。根据 XML 1.0 规范,默认情况下,unicode 字符串不是格式正确的 XML。因此,在将其提供给解析器之前,您需要将 unicode 转换为 UTF-8 编码。

关于xml - 在 App Engine 上使用 Python SAX 解析 unicode XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2632111/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com