从python简单输出xml

2024-10-01 07:17:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要以一种非常简单的方式从python输出XML:

  • 除了Python2.6.5中已有的库之外,我不能使用任何外部库
  • 我需要输出XML标记和文本内容,不带属性

在这一点上,我使用print语句显式地打印出尖括号标记,唯一阻止我的是在标记中转义文本,我不知道该怎么做。在

有什么建议吗?在


更新:对于Python,有没有类似Java的StAX XMLStreamWriter?我可能有一个大的XML文档要生成,我不需要(也不想)将整个文档保存在内存中。在

更新2:除了<>和{}之外,我还需要转义文本中的随机unicode或非ASCII字符。在


Tags: 内存文档标记文本内容属性方式xml
3条回答

嗯,看起来萨克斯并不是那么难用。这里有一个例子。在

在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()

测试:

^{pr2}$

产生:

<?xml version="1.0" encoding="iso-8859-1"?>
<document><element1>bingo</element1><element2>wham &lt; 3!</element2></document>

ElementTree随Python 2.6一起提供:

from xml.etree import ElementTree as ET
root = ET.Element('root')
sub = ET.SubElement(root,'sub')
sub.text = 'Hello & Goodbye'
tree = ET.ElementTree(root)
tree.write('out.xml')
# OR
ET.dump(root)

输出

^{pr2}$

如果任务很简单,minidom就足够了。下面是一个简短的例子:

from xml.dom.minidom import Document

# create xml document
document = Document()

# create root element
root = document.createElement("root")
document.appendChild(root)

# create child element
child = document.createElement("child")
child.setAttribute("tag", "test")
root.appendChild(child)

# insert some text
atext = document.createTextNode("Foo bar")
child.appendChild(atext)

# print created xml
print(document.toprettyxml(indent="    "))

相关问题 更多 >