Skip to main content
 首页 » 编程设计

python之从python简单输出xml

2025年05月04日11开发

我需要以一种非常简约的方式从 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 &lt; 3!</element2></document>