python中的XML字符xml.dom文件

2024-10-03 21:29:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从python生成一个xml文档。我们正在使用xml.dom文件包来创建xml文档。我们遇到了一个问题,我们想要生成一个φ字符&x03c6。但是,当我们将该字符串放在文本节点中并对其调用toxml()时,我们得到的是&;x03c6;。我们目前的解决方案是使用萨克斯utils.unescape(),但这并不理想,因为我们需要解析xml两次。在

有没有办法让dom包将“&;x03c6;”识别为xml字符?在


Tags: 文件字符串文档文本节点utilsxml解决方案
1条回答
网友
1楼 · 发布于 2024-10-03 21:29:20

我认为您需要使用一个包含\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')。在

相关问题 更多 >