XMLGenerator python sax 库:写出内联/关闭标记

XMLGenerator python sax library: write out inline / closed tag

我使用来自 xml.sax.saxutils 的 python XMLGenerator class 写出 xml。

    xmlwriter = XMLGenerator(output, encoding)
    xmlwriter.startDocument()
    xmlwriter.startElement("foo", {})
    ...
    xmlwriter.endElement("foo", {})

写出标签总是由 startElementendElement 函数完成。对于内联标签(类似于 XHTML 的 <br /><img />),我想直接写出带结尾的标签。有没有办法用 SAX 做到这一点?

如果您使用的是 Python 3.2 或更高版本,可以将 short_empty_elements 参数传递给 XMLGenerator (see the Python xml.sax.utils docs)。

例如:

from xml.sax.saxutils import *
import sys
output = sys.stdout
encoding = 'utf-8'
xmlwriter = XMLGenerator(output, encoding, short_empty_elements=True)
xmlwriter.startDocument()
xmlwriter.startElement(name="foo", attrs={})
xmlwriter.endElement(name="foo")

将产生输出:

<?xml version="1.0" encoding="utf-8"?>
<foo/>