【发布时间】:2011-12-10 09:57:23
【问题描述】:
在 django 中,
addQuickElement(name,content,attr)
像这样生成 XML
<name attr="attr">content</name>
虽然我想生成
<name attr="attr" />
【问题讨论】:
在 django 中,
addQuickElement(name,content,attr)
像这样生成 XML
<name attr="attr">content</name>
虽然我想生成
<name attr="attr" />
【问题讨论】:
只是不要指定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 中,XMLGenerator.__init__ 中添加了一个参数 short_empty_elements,但 Django 不仅兼容使用 Python 2.x。如果您关心获得短标签,请查看 xml.sax.saxutils.XMLGenerator.startElement 实现。)
【讨论】:
以下是针对这种情况的一些一般性建议,旨在让您以最小的延迟再次移动:
第 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 步:在类似这样的论坛上提问
【讨论】:
<name attr="attr" /> 这样的生成格式的方法。