我需要以一种非常简约的方式从 python 输出 XML:
- 除了 Python 2.6.5 中已有的库之外,我不能使用任何外部库
- 我需要输出没有属性的XML标签和文本内容
此时我正在使用 print 语句显式打印出尖括号标签,唯一真正阻止我的是转义标签内的文本,我不知道该怎么做。
有什么建议吗?
更新:有没有类似Java的StAX XMLStreamWriter的东西?对于 Python?我可能要生成一个大型 XML 文档,但我不需要(或不想)将整个文档保存在内存中。
更新 #2: 除了 < 之外,我还需要转义文本中的随机 unicode 或非 ASCII 字符, >和 & .
请您参考如下方法:
嗯,看起来 SAX 并不难用。这是一个例子。
xmltest.py:
import xml.sax.xmlreader
import xml.sax.saxutils
def testJunk(file, e2content):
attr0 = xml.sax.xmlreader.AttributesImpl({})
x = xml.sax.saxutils.XMLGenerator(file)
x.startDocument()
x.startElement("document", attr0)
x.startElement("element1", attr0)
x.characters("bingo")
x.endElement("element1")
x.startElement("element2", attr0)
x.characters(e2content)
x.endElement("element2")
x.endElement("document")
x.endDocument()
测试:
>>> import xmltest
>>> xmltest.testJunk(open("test.xml","w"), "wham < 3!")
产生:
<?xml version="1.0" encoding="iso-8859-1"?>
<document><element1>bingo</element1><element2>wham < 3!</element2></document>
