一尘不染

Python XML:用“而不是”代替

python

我正在使用Python的xml
minidom,并且一切正常,除了在文本序列中它写出&quot转义字符而不是"。如果引号出现在标签中,这当然是有道理的,但它使我在文本中感到困惑。我该如何改变?


阅读 224

收藏
2021-01-20

共1个答案

一尘不染

查看源代码(如果需要的话,则为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的快速扫描表明,只有<和& 必须 被编码。

2021-01-20