在django,
addQuickElement(name,content,attr)
像这样生成XML
<name attr="attr">content</name>
虽然我想生成
<name attr="attr" />
答案 0 :(得分:2)
只是不要指定contents
参数。
供参考,这是django/utils/xmlutils.py
:
"""
Utilities for XML generation/parsing.
"""
from xml.sax.saxutils import XMLGenerator
class SimplerXMLGenerator(XMLGenerator):
def addQuickElement(self, name, contents=None, attrs=None):
"Convenience method for adding an element with no children"
if attrs is None: attrs = {}
self.startElement(name, attrs)
if contents is not None:
self.characters(contents)
self.endElement(name)
您可以在此处看到,您只需要不指定contents
,这样就可以x.addQuickElement(name, attrs=attrs)
。
(快速浏览XMLGenerator表明这仍然会产生一个结束标记,而不是一个自动结束标记。在Python 3.2中,short_empty_elements
添加了一个参数XMLGenerator.__init__
,但Django不是'仍然只与Python 2.x兼容。如果您关心获取短标签,请查看xml.sax.saxutils.XMLGenerator.startElement
实现。)
答案 1 :(得分:1)
以下是针对这种情况的一些一般性建议,旨在让您以最小的延迟再次行动:
第1步:尝试一些看似合理的事情。在这种情况下:
addQuickElement(name, None, attr)
第2步:使用帮助,例如:
>>> help(whatever.addQuickElement)
Help on function addQuickElement in module whatever:
addQuickElement(self, name, contents=None, attrs=None)
^^^^^^^^^^^^^
第3步:阅读神奇手册
第4步:在像这样的论坛上提问