【问题标题】:XML characters in python xml.dompython xml.dom 中的 XML 字符
【发布时间】:2009-05-31 22:16:45
【问题描述】:

我正在从 python 生成一个 xml 文档。我们正在使用 xml.dom 包来创建 xml 文档。我们在想要生成字符 φ 时遇到问题。这是一个φ。但是,当我们将该字符串放入文本节点并在其上调用 toxml() 时,我们会得到 φ。我们当前的解决方案是在 toxml() 的结果上使用 saxutils.unescape() 但这并不理想,因为我们必须解析 xml 两次。

有没有办法让 dom 包识别“φ”作为 xml 字符?

【问题讨论】:

    标签: python xml dom


    【解决方案1】:

    我认为您需要使用带有 \u03c6 的 Unicode 字符串,因为文本节点的 .data 字段应该(据我了解)是“解析”数据,不包括 XML 实体(当返回 XML 时,& 的来源)。如果您想确保在输出时将非 ascii 字符表示为实体,您可以这样做:

    import codecs
    
    def ent_replace(exc):
      if isinstance(exc, (UnicodeEncodeError, UnicodeTranslateError)):
        s = []
        for c in exc.object[exc.start:exc.end]:
          s.append(u'&#x%4.4x;' % ord(c))
        return (''.join(s), exc.end)
      else:
        raise TypeError("can't handle %s" % exc.__name__)
    
    codecs.register_error('ent_replace', ent_replace)
    

    并使用x.toxml().encode('ascii', 'ent_replace')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多