Python XML:写“而不是”

时间:2011-08-11 17:45:55

标签: python xml minidom

我正在使用Python的xml minidom并且一切正常但除了在文本序列中它写出&quot转义字符而不是"。如果引用出现在标记中,这当然是有意义的,但它会在文本中引起我的注意。我该如何改变?

1 个答案:

答案 0 :(得分:5)

查看源代码(Python 3.2是否重要),这在_write_data()函数中是硬编码的。你需要修改TextNode的writexml()方法 - 通过子类化或简单地编辑它 - 这样它就不会调用那个方法,而是做类似于仅转义的方法<和>。

如果你在包之外创建了一个子类(而不是复制和黑客攻击包来制作你自己的自定义xmlminidom),那么看起来,只需要小心一点,就可以让事情发挥作用。因此,您将创建自己的(子类)TextNode,如上所述进行修改,然后,为了向DOM添加文本,您将添加新类的实例(或用该类的实例替换现有文本节点)。您需要设置ownerDocument属性。也许最简单的方法是继承Document并修复createTextNode()方法。

但我没有看到一种更简单的方法来做你想做的事。最好使用更好的dom实现。

ps我不知道xml规范是否需要这种行为。更新:http://www.w3.org/TR/2008/REC-xml-20081126/#syntax的快速扫描表明只有<和& 必须进行编码。