PYTHON 2.6 XML.ETREE输出属性的单引号而不是双引号

Seb*_*Seb 2 python xml lxml python-2.6

我得到以下代码:

#!/usr/bin/python2.6  

from lxml import etree  

n = etree.Element('test')    
n.set('id','1234')  
print etree.tostring(n)  
Run Code Online (Sandbox Code Playgroud)

输出生成是<test id="1234"/>
我想要的<test id='1234'/>

有人可以帮忙吗?

Zac*_*ung 7

我检查了文档,发现没有单/双引号选项的参考.

我认为你唯一的办法是 print etree.tostring(n).replace('"', "'")

更新

鉴于:

from lxml import etree
n = etree.Element('test')
n.set('id', "Zach's not-so-good answer")
Run Code Online (Sandbox Code Playgroud)

由于撇号不平衡,我原来的答案可能输出格式错误的XML:

<test id='Zach's not-so-good answer'></test>
Run Code Online (Sandbox Code Playgroud)

Martijn建议print etree.tostring(n).replace("'", '&apos;').replace('"', "'")解决这个问题:

<test id='Zach&apos;s not-so-good answer'></test>
Run Code Online (Sandbox Code Playgroud)

  • 这非常不可靠. (6认同)
  • 毫无疑问,这是不可靠的,这就是我使用“追索权”一词的原因。尽管如此,OP 仍然面临着糟糕的 XML 解析器/处理器,而这个解决方案就成功了。 (2认同)